ActiveMQ持久化機(jī)制代碼實(shí)例
這篇文章主要介紹了ActiveMQ持久化機(jī)制代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
用戶注冊(cè)成功后發(fā)短信提醒
同步http
異步mq
JMS中兩種通訊模式:
發(fā)布訂閱 一對(duì)多 topic 去過(guò)消費(fèi)者集群的話 都會(huì)消費(fèi)
消息隊(duì)列 點(diǎn)對(duì)點(diǎn) queue 去過(guò)消費(fèi)者集群的話 均攤消費(fèi)
場(chǎng)景問(wèn)題: 服務(wù)器斷電重啟,未被消費(fèi)的消息是否會(huì)在重啟之后消費(fèi)?
兩種模式:
1、非持久性,服務(wù)器斷電(關(guān)閉)之后,使用非持久性模型時(shí),沒有被消費(fèi)的消息不會(huì)繼續(xù)消費(fèi),全部丟失 。程序會(huì)報(bào)一個(gè)連接關(guān)閉異常,停止運(yùn)行。繼續(xù)啟動(dòng)服務(wù)器運(yùn)行程序,不會(huì)接收任何消息。
2、持久性,服務(wù)器斷電(關(guān)閉)之后,使用持久性模型時(shí),沒有被消費(fèi)的消息會(huì)繼續(xù)消費(fèi),程序也會(huì)報(bào)連接關(guān)閉異常,但再次啟動(dòng)服務(wù)器和程序后,接收方還能繼續(xù)原來(lái)的消息再次接收。
package com.toov5.producer;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class producerTest {
// mq通訊地址
private static String url = "tcp://192.168.91.6:61616";
// 隊(duì)列名稱
private static String queueName = "toov5_queue";
public static void main(String[] args) throws JMSException {
// 先創(chuàng)建連接工廠 密碼默認(rèn)采用admin admin
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
// 創(chuàng)建連接
Connection connection = activeMQConnectionFactory.createConnection();
// 啟動(dòng)連接
connection.start();
// 創(chuàng)建會(huì)話
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 是否需要事務(wù)方式提交 消費(fèi)方式默認(rèn)自動(dòng)簽收
// 拿到session 創(chuàng)建目標(biāo) 創(chuàng)建隊(duì)列
Queue queue = session.createQueue(queueName);
// 創(chuàng)建生產(chǎn)者
MessageProducer producer = session.createProducer(queue); // 生產(chǎn)者生產(chǎn)的消息 是放在這個(gè)queue里面的
producer.setDeliveryMode(DeliveryMode.PERSISTENT); //默認(rèn)非持久化的 設(shè)置持久化
for (int i = 1; i < 10; i++) {
// 拿到隊(duì)列 創(chuàng)建消息
TextMessage textMessage = session.createTextMessage("消息內(nèi)容" + i);
// 發(fā)送消息
producer.send(textMessage);
}
// 關(guān)閉連接
connection.close();
System.out.println("消息發(fā)送完畢");
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot多環(huán)境打包與配置文件排除實(shí)踐記錄
本文介紹了SpringBoot項(xiàng)目多環(huán)境打包與配置文件排除實(shí)踐,包括多環(huán)境配置的實(shí)現(xiàn)方法、打包時(shí)排除配置文件的方法以及動(dòng)態(tài)加載外部配置文件的最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧2024-11-11
"Method?Not?Allowed"405問(wèn)題分析以及解決方法
項(xiàng)目中在提交表單時(shí),提示“HTTP 405”錯(cuò)誤——“Method Not Allowed”這里顯示的是,方法不被允許,下面這篇文章主要給大家介紹了關(guān)于"Method?Not?Allowed"405問(wèn)題分析以及解決方法的相關(guān)資料,需要的朋友可以參考下2022-10-10
Spring?AOP?創(chuàng)建代理對(duì)象詳情
這篇文章介紹了Spring?AOP?創(chuàng)建代理對(duì)象詳情,主要介紹AOP?創(chuàng)建代理對(duì)象和上下文相關(guān)的內(nèi)容,下文分享具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
SpringBoot打印系統(tǒng)執(zhí)行的sql語(yǔ)句及日志配置指南
這篇文章主要給大家介紹了關(guān)于SpringBoot打印系統(tǒng)執(zhí)行的sql語(yǔ)句及日志配置的相關(guān)資料,在Java SpringBoot項(xiàng)目中如果使用了Mybatis框架,默認(rèn)情況下執(zhí)行的所有SQL操作都不會(huì)打印日志,需要的朋友可以參考下2023-10-10
Springboot mybais配置多數(shù)據(jù)源過(guò)程解析
這篇文章主要介紹了Springboot+mybais配置多數(shù)據(jù)源過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
SpringBoot采用AJAX實(shí)現(xiàn)異步發(fā)布帖子詳解
Ajax是一種web應(yīng)用技術(shù),可以借助客戶端腳本(javascript)與服務(wù)端應(yīng)用進(jìn)行異步通訊,獲取服務(wù)端數(shù)據(jù)以后,可以進(jìn)行局部刷新,進(jìn)而提高數(shù)據(jù)的響應(yīng)和渲染速度。所有的Ajax請(qǐng)求都會(huì)基于DOM(HTML元素)事件,通過(guò)XHR(XMLHttpRequest)對(duì)象實(shí)現(xiàn)與服務(wù)端異步通訊局部更新2022-08-08

