黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 ActiveMQ的消息事務(wù)

ActiveMQ的消息事務(wù)

更新時間:2021-07-28 17:08:12 來源:動力節(jié)點(diǎn) 瀏覽1794次

消息事務(wù)

消息事務(wù),是保證消息傳遞原子性的一個重要特征,和JDBC的事務(wù)特征類似。

一個事務(wù)性發(fā)送,其中一組消息要么能夠全部保證到達(dá)服務(wù)器,要么都不到達(dá)服務(wù)器。

生產(chǎn)者、消費(fèi)者與消息服務(wù)器直接都支持事務(wù)性;

ActiveMQ的事務(wù)主要偏向在生產(chǎn)者的應(yīng)用。

ActiveMQ消息事務(wù)流程圖:

activemq事務(wù)

1.生產(chǎn)者事務(wù):

沒有加入事務(wù)的時候,會有部分信息過去,結(jié)果如圖:

activemq事務(wù)

方式一:

 /**
     * 事務(wù)性發(fā)送--方案一
     */
    @Test
    public void sendMessageTx(){
        //獲取連接工廠
        ConnectionFactory connectionFactory = jmsMessagingTemplate.getConnectionFactory();

        Session session = null;
        try {
            //創(chuàng)建連接
            Connection connection = connectionFactory.createConnection();

            /**
             * 參數(shù)一:是否開啟消息事務(wù)
             */
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);

            //創(chuàng)建生產(chǎn)者
            MessageProducer producer = session.createProducer(session.createQueue(name));

            for(int i=1;i<=10;i++){
                //模擬異常
                if(i==4){
                    int a = 10/0;
                }

                TextMessage textMessage = session.createTextMessage("消息--" + i);
                producer.send(textMessage);
            }

            //注意:一旦開啟事務(wù)發(fā)送,那么就必須使用commit方法進(jìn)行事務(wù)提交,否則消息無法到達(dá)MQ服務(wù)器
            session.commit();
        } catch (JMSException e) {
            e.printStackTrace();
            //消息事務(wù)回滾
            try {
                session.rollback();
            } catch (JMSException e1) {
                e1.printStackTrace();
            }
        }


    }

結(jié)果,沒有發(fā)送出去

方式二:

/**
 * ActiveMQ配置類
 */
@Configuration
public class ActiveMQConfig {

    /**
     * 添加Jms事務(wù)管理器
     */
    @Bean
    public PlatformTransactionManager createTransactionManager(ConnectionFactory connectionFactory){
        return new JmsTransactionManager(connectionFactory);
    }

}

/**
 * 消息發(fā)送的業(yè)務(wù)類
 */
@Service
public class MessageService {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
    @Value("${activemq.name}")
    private String name;

    @Transactional // 對消息發(fā)送加入事務(wù)管理(同時也對JDBC數(shù)據(jù)庫的事務(wù)生效)
    public void sendMessage(){
        for(int i=1;i<=10;i++) {
            //模擬異常
            if(i==4){
                int a = 10/0;
            }

            jmsMessagingTemplate.convertAndSend(name, "消息---"+i);
        }
    }

}

2.消費(fèi)者事務(wù)

/**
 * 用于監(jiān)聽消息類(既可以用于隊(duì)列的監(jiān)聽,也可以用于主題監(jiān)聽)
 */
@Component // 放入IOC容器
public class MsgListener {

    /**
     * 接收TextMessage的方法
     */
    @JmsListener(destination = "${activemq.name}")
    public void receiveMessage(Message message,Session session){
        if(message instanceof TextMessage){
            TextMessage textMessage = (TextMessage)message;

            try {
                System.out.println("接收消息:"+textMessage.getText());


                int i=10/0;

                //提交事務(wù)
                session.commit();
            } catch (JMSException e) {
                e.printStackTrace();
                //回滾事務(wù)
                try {
                    session.rollback();//一旦事務(wù)回滾,MQ會重發(fā)消息,一共重發(fā)6次
                } catch (JMSException e1) {
                    e1.printStackTrace();
                }
            }

        }
    }

}

注意如果在消費(fèi)者異常了,會收到消息,然后重發(fā)6次,要是期間還是異常,就會到私信隊(duì)列中

activemq事務(wù)

以上就是動力節(jié)點(diǎn)小編介紹的"ActiveMQ的消息事務(wù)",希望對大家有幫助,想了解更多可查看ActiveMQ教程。動力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: a级午夜毛片免费一区二区 a级午夜理论免费毛片 | 欧美色穴 | 亚洲欧美一区二区三区国产精品 | 欧美日本一道免费一区三区 | 久久成年人视频 | 免费看的黄色大片 | 一级床上爽高清播放 | 日日摸日日碰夜夜爽视频网站 | 香蕉污视频在线观看 | 91国语精品自产拍在线观看性色 | 国产一国产一级毛片视频 | 黄色午夜视频 | 普通话中国videos | 69性成熟xxxxhd | 成人免费网址在线 | 在线观看黄色一级片 | 国产综合第一页在线视频 | 欧美久久一区二区 | 久久久久avav久久久 | 日本三级香港三级人妇 m | 久久精品波多野结衣 | 亚洲sss综合天堂久久久 | 中文国产成人精品少久久 | 7m视频在线观看高清国产7m | www日韩在线 | 看国产黄色片 | 欧美综合自拍亚洲综合图自拍 | 精品午夜寂寞黄网站在线 | 手机看片a永久免费看大片 手机看片91精品一区 | 永久网站色视频在线观看免费 | 1314亚洲人成网站在线观看 | 成年视频xxxxx免费播放软件 | 欧美国产成人免费观看永久视频 | 欧美成人全部视频 | 茄子视频黄 | 国产精品九九九久久九九 | 在线观看欧美一区 | 天堂在线视频 | 三级伦理在线播放 | 国产玖玖视频 | 天天做日日干 |