大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

ActiveMQ的消息事務(wù)

更新時(shí)間:2021-07-28 17:08:12 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1812次

消息事務(wù)

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

一個(gè)事務(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ù):

沒(méi)有加入事務(wù)的時(shí)候,會(huì)有部分信息過(guò)去,結(jié)果如圖:

activemq事務(wù)

方式一:

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

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

            /**
             * 參數(shù)一:是否開(kāi)啟消息事務(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);
            }

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


    }

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

方式二:

/**
 * ActiveMQ配置類(lèi)
 */
@Configuration
public class ActiveMQConfig {

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

}

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

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

    @Transactional // 對(duì)消息發(fā)送加入事務(wù)管理(同時(shí)也對(duì)JDBC數(shù)據(jù)庫(kù)的事務(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)聽(tīng)消息類(lèi)(既可以用于隊(duì)列的監(jiān)聽(tīng),也可以用于主題監(jiān)聽(tīng))
 */
@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會(huì)重發(fā)消息,一共重發(fā)6次
                } catch (JMSException e1) {
                    e1.printStackTrace();
                }
            }

        }
    }

}

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

activemq事務(wù)

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

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成人免费视频一区二区三区 | 国产成人青青热久免费精品 | 老子影院午夜精品欧美视频 | 四虎4hu影库永久地址 | 日本综合在线观看 | 呦女亚洲一区精品 | 亚洲国产精品国产自在在线 | 视频一区亚洲 | 国产色婷婷精品综合在线 | 国产成人爱片免费观看视频 | 成人综合久久综合 | 精品国产综合区久久久久久 | 波多结衣一区二区三区 | 偷拍清纯高清视频在线 | 国产一区二区在线不卡 | 免费特黄一级欧美大片在线看 | 日本一级欧美一级中文 | 玖玖精品视频在线 | 免费网站毛片 | 国产精品免费久久久免费 | 九月丁香婷婷亚洲综合色 | 69日本xxxxxxxx59| 欧美一级一极性活片免费观看 | 国产成人看片免费视频观看 | 午夜精品久久久久久久 | 久久99热精品免费观看欧美 | 五月天婷亚洲 | 亚洲狠狠婷婷综合久久久图片 | 国产欧美一区二区 | 99青草| 欧美日韩国产在线人成 | 在线观看人成午夜影片 | 亚洲综合狠狠 | 成人国产精品免费网站 | 欧美毛片aaaaa片久久久久 | 婷婷免费视频 | 狠狠r| 亚洲高清成人欧美动作片 | 9re视频这里只有精品 | 2020国产精品永久在线观看 | 深夜福利在线看 |