我的接收者未收到持久性消息。 如果接收者在线并且如果我正在发送消息,那么它正在接收消息,但是如果我不在线(未连接到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主题配置了持久性交付
答案 0 :(得分: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));