我有一个用例,其中队列需要达到24/7,所以冗余是关键,因此需要多可用区。除此之外,我想确保发送到队列的消息满足以下要求,但是我之前从未配置过AMQ或activeMQ,所以我有点迷路。
- 消息在队列重新启动期间保留=持久模式
- 多个使用者可以阅读消息
- 第一次读取(确认)后,消息不会立即脱离队列
- 可能将消息的生命周期配置为在48小时之类的时间范围内可用。
关于满足这些要求的XML配置的任何示例或指南都是很棒的。我没有在网上找到2-4项。
ActiveMQ是符合JMS的消息代理。您列出的大多数要求是由生产者方的属性控制的。
我在答案中使用Java代码段。
MessageProducer producer = session.createProducer(session.createQueue(queueName)); producer.setDeliveryMode(DeliveryMode.PERSISTENT);
向多个收件人发送邮件是一种“发布者-订阅者”模式,而不是“生产者-消费者”模式。创建一个主题,该主题是多个客户端订阅的目标。否则,您希望每个收件人都有一个队列。 JMS Topic Example。
在以下选项中选择适合您的任何模式:https://docs.oracle.com/cd/E19798-01/821-1841/bncfw/index.html。您可能需要CLIENT_ACKNOWLEDGE
并使用acknowledge()
方法手动发送确认。在JMS会话上设置了确认模式:
Session session = connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
producer.setTimeToLive(ttl);
Amazon SQS也遵守JMS协议,因此上面的1,3,4的ActiveMQ API示例对于SQS仍然有效,因为SQSConnection类扩展了javax.jms.Connection。请按照Getting Started指南进行更详细的操作。
SQS提供有关消息持久性(https://aws.amazon.com/message-queue/features/)的保证;
Pub / Sub模式也可用于Amazon MQ(https://aws.amazon.com/pub-sub-messaging/)。