• activemq


    一、事务(指服务端,对客户端不生效)

    消息分为事务消息和非事务消息

    1、事务消息:创建会话Session使用transacted=true

    connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);

    2、非事务消息:创建会话Session使用transacted=false

    connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);

    事务消息必须在发送和接收完消息后显式地调用session.commit();

    事务性消息,不管设置何种消息确认模式,都会自动被确认;与设置的确认机制无关,但官方推荐事务性消息使用事务确认机制.

    二、确认机制(指客户端,对服务端不生效)

    (1)、Session.AUTO_ACKNOWLEDGE;客户(消费者)成功从receive方法返回时,或者从MessageListener.onMessage方法成功返回时,会话自动确认消息,然后自动删除消息.

    (2)、Session.CLIENT_ACKNOWLEDGE;客户通过显式调用消息的acknowledge方法确认消息,。 即在接收端调用message.acknowledge();方法,否则,消息是不会被删除的.

    (3)、Session. DUPS_OK_ACKNOWLEDGE ;不是必须确认,是一种“懒散的”消息确认,消息可能会重复发送,在第二次重新传送消息时,消息头的JMSRedelivered会被置为true标识当前消息已经传送过一次,客户端需要进行消息的重复处理控制。

    (4)、 Session.SESSION_TRANSACTED;事务提交并确认。

     

    三、消息持久化

    2.8 ActiveMQ持久化消息与非持久化消息

    messageProducer.setDeliveryMode(DeliveryMode. NON_PERSISTENT);//不持久化
    messageProducer.setDeliveryMode(DeliveryMode.

    PERSISTENT);//持久化的,当然activemq发送消息默认都是持久化的

    说明:

    设置完后,如果为持久化,那么消息在没有被消费前都会被写入本地磁盘kahadb文件中保存起来,即使服务器宕机,也不会影响

    消息.如果是非持久化的,那么,服务一旦宕机之类的情况发生,消息即会被删除.

    ActiveMQ默认是持久化的.

     

     

     

     

  • 相关阅读:
    Prof. Dr. Ligang Liu (刘利刚) 中国科技大学
    Chi-Wing FU, Philip
    LinuxROS与Android哪个重要?
    深圳市智汇机器人科技有限公司&环宇智行
    【泡泡机器人公开课预告】刘艺博-三维视觉与深度学习
    VS配置FFmpeg开发环境
    VS搭建Boost编程环境
    C++ 多线程编程解决CPU占用率高问题
    C++ 调节PCM音频音量大小
    C++ 采集音频流(PCM裸流)实现录音功能
  • 原文地址:https://www.cnblogs.com/jentary/p/10812740.html
Copyright © 2020-2023  润新知