【问题标题】:Amazon MQ Message Delivery and Persistence ConfigurationAmazon MQ 消息传递和持久性配置
【发布时间】:2019-11-15 15:32:41
【问题描述】:

我有一个用例,队列需要 24/7 全天候运行,因此冗余是关键,因此需要多可用区。除此之外,我想确保发送到队列的消息满足以下要求,但我之前从未配置过 AMQ 或 ActiveMQ,所以我有点迷茫。

  1. 队列重新启动期间消息保留 = 持久模式
  2. 消息可以被多个消费者读取
  3. 消息在第一次读取(确认)后不会立即从队列中删除
  4. 可能会将消息的生命周期配置为在 48 小时等时间窗口内可用。

满足这些要求的任何有关 XML 配置的示例或指南都非常棒。我在网上找不到太多关于第 2-4 项的内容。

【问题讨论】:

    标签: activemq amazon-mq


    【解决方案1】:

    ActiveMQ

    ActiveMQ 是一个符合 JMS 的消息代理。您列出的大多数要求都由生产者端的属性控制。

    我在答案中使用了 Java sn-ps。

    1. MessageProducer producer = session.createProducer(session.createQueue(queueName)); producer.setDeliveryMode(DeliveryMode.PERSISTENT);

    2. 向多个收件人发送消息是一种“发布者-订阅者”模式,而不是“生产者-消费者”模式。创建一个作为多个客户端订阅目标的主题。否则,您希望每个收件人都有一个队列。 JMS Topic Example.

    3. 从以下选项中选择适合您的模式:https://docs.oracle.com/cd/E19798-01/821-1841/bncfw/index.html。您可能需要CLIENT_ACKNOWLEDGE 并使用acknowledge() 方法手动发送确认。在 JMS 会话上设置确认模式:

      Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

    4. producer.setTimeToLive(ttl);

    Amazon SQS(简单队列服务)

    Amazon SQS 也遵守 JMS 协议,因此上面针对 1、3、4 的 ActiveMQ API 示例对于 SQS 仍然有效,因为 SQSConnection 类扩展了 javax.jms.Connection。请按照Getting Started 指南了解更多详细步骤。

    1. SQS 提供有关消息持久性的保证 (https://aws.amazon.com/message-queue/features/);

    2. Pub/Sub 模式也适用于 Amazon MQ (https://aws.amazon.com/pub-sub-messaging/)。

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 2020-11-13
      • 2016-01-07
      • 1970-01-01
      • 2011-09-07
      • 2011-10-12
      • 1970-01-01
      • 2015-01-09
      • 2014-02-05
      相关资源
      最近更新 更多