【问题标题】:createdurablesubscriber not receiving persistence messages activemqcreatedurablesubscriber 没有收到持久性消息 activemq
【发布时间】:2019-01-27 07:12:47
【问题描述】:

我的接收器没有收到持久性消息。 如果接收者在线并且我正在发送消息,那么它正在接收消息,但如果我不在线(未连接到 activeMQ),那么我在发送消息后发送消息我连接到 activeMQ。在这种情况下,我没有收到消息。 这是我的接收者代码。

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Constants.USER_NAME,
            Constants.PASSWORD,Constants.BROKER_URL);
    connectionFactory.setTrustAllPackages(true);



        connection = connectionFactory.createConnection();
        connection.setClientID(Utility.getIMEINumber(context));
        connection.start();
        Topic destination = new ActiveMQTopic(Constants.TOPIC_NAME);

        Session receiverSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        receiverSession.createDurableSubscriber(destination,Utility.getIMEINumber(context));
        MessageConsumer receiver = receiverSession.createConsumer(destination);

我的发件人代码如下

jmsTemplateTopic.convertAndSend(objectMessage);

jms 主题配置了持久化传递

【问题讨论】:

  • 在发送消息之前,持久订阅者是否至少连接过一次?
  • 是的。首先我连接然后断开连接。

标签: android jms activemq jms-topic


【解决方案1】:

当你创建一个持久订阅者时,你也应该使用它!在上面的代码中,您正在创建两个订阅者,第一个是耐用的,您不使用,第二个是非耐用的,我猜您确实使用过(无法判断,因为您的其余代码丢失了)。 所以而不是:

    Session receiverSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    receiverSession.createDurableSubscriber(destination,Utility.getIMEINumber(context));
    MessageConsumer receiver = receiverSession.createConsumer(destination);

尝试:

    Session receiverSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    MessageConsumer receiver = receiverSession.createDurableSubscriber(destination,Utility.getIMEINumber(context));

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2011-04-26
    • 2016-03-22
    • 2018-08-22
    • 1970-01-01
    • 2019-07-30
    • 2013-11-24
    • 2011-10-12
    • 2015-11-13
    相关资源
    最近更新 更多