1,consumer,connection何时关闭

1)当我们在使用设置监听的方式接收消息的时候,不可以在程序中主动关闭consumer,因为消息是异步接收的,此时如入关闭,会造成在没有接收消息的情况下消费者就被关闭,这个监听器也就没有什么意义了。

2)使用receive()方式接收消息,如果在接受到消息后不关闭当前连接,那么当我们在新建一个连接的时候(使用线程创建新的连接),无法从消息队列中拿到消息。

ActiveMQ注意事项ActiveMQ注意事项ActiveMQ注意事项ActiveMQ注意事项

接收的结果为:

ActiveMQ注意事项

虽然,此时我们已经建立了新的连接,但是由于在原先连接consumerreceive()方法处处于阻塞状态,所以,新的连接还是无法接受到MQ消息。

如果使用循环使当前的consumer再次调用receive()方法,就可以接受到新的消息了。

2,session不同的创建方式

1) 当我们使用事务的方式创建session的时候,在发送完MQ消息后,必须添加session.commit(),否则,这些发送的消息不会加入消息队列。

如图消息被打印,但是,在队列中却差看不到。

ActiveMQ注意事项

ActiveMQ注意事项

添加session.commit();

ActiveMQ注意事项

2) 使用非事务的方式创建session,没有session.commit(),也被加入消息队列。

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2021-11-26
  • 2021-11-09
  • 2021-07-07
  • 2021-08-02
  • 2021-08-14
  • 2021-11-05
猜你喜欢
  • 2022-01-04
相关资源
相似解决方案