摘要:的全稱是,即消息服務(wù)。它主要用于在生產(chǎn)者和消費(fèi)者之間進(jìn)行消息傳遞,生產(chǎn)者負(fù)責(zé)產(chǎn)生消息,而消費(fèi)者負(fù)責(zé)接收消息。會話是生產(chǎn)和消費(fèi)消息的一個單線程上下文。消息消息由以下三部分組成消息頭。
今天我們以ActiveMQ為例進(jìn)行一系列的學(xué)習(xí)
Apache ActiveMQ是Apache軟件基金會所研發(fā)的開放源碼消息中間件;由于ActiveMQ是一個純Java框架,那么我們先要了解下java中的JMS。
JMS的全稱是Java Message Service,即Java消息服務(wù)。它主要用于在生產(chǎn)者和消費(fèi)者之間進(jìn)行消息傳遞,生產(chǎn)者負(fù)責(zé)產(chǎn)生消息,而消費(fèi)者負(fù)責(zé)接收消息。把它應(yīng)用到實(shí)際的業(yè)務(wù)需求中的話我們可以在特定的時(shí)候利用生產(chǎn)者生成一消息,并進(jìn)行發(fā)送,對應(yīng)的消費(fèi)者在接收到對應(yīng)的消息后去完成對應(yīng)的業(yè)務(wù)邏輯。對于消息的傳遞有兩種類型,一種是點(diǎn)對點(diǎn)的,即一個生產(chǎn)者和一個消費(fèi)者一一對應(yīng);另一種是發(fā)布/訂閱模式,即一個生產(chǎn)者產(chǎn)生消息并進(jìn)行發(fā)送后,可以由多個消費(fèi)者進(jìn)行接收。
JMS基本構(gòu)成 1、連接工廠連接工廠是客戶用來創(chuàng)建連接的對象,例如 ActiveMQ 提供的
ActiveMQConnectionFactory。
JMS Connection 封裝了客戶與 JMS 提供者之間的一個虛擬的連接。
3、會話JMS Session 是生產(chǎn)和消費(fèi)消息的一個單線程上下文。會話用于創(chuàng)建消息生
產(chǎn)者(producer)、消息消費(fèi)者(consumer)和消息(message)等。會話提供
了一個事務(wù)性的上下文,在這個上下文中,一組發(fā)送和接收被組合到了一個原子
操作中。
目的地是客戶用來指定它生產(chǎn)的消息的目標(biāo)和它消費(fèi)的消息的來源的對象。
JMS1.0.2 規(guī)范中定義了兩種消息傳遞域:點(diǎn)對點(diǎn)(PTP)消息傳遞域和發(fā)布/訂閱
消息傳遞域。
消息生產(chǎn)者是由會話創(chuàng)建的一個對象,用于把消息發(fā)送到一個目的地。
6、消息消費(fèi)者消息消費(fèi)者是由會話創(chuàng)建的一個對象,它用于接收發(fā)送到目的地的消息。
7、消息JMS 消息由以下三部分組成:
? 消息頭。每個消息頭字段都有相應(yīng)的 getter 和 setter 方法。
? 消息屬性。如果需要除消息頭字段以外的值,那么可以使用消息屬性。
? 消息體。JMS 定義的消息類型有 TextMessage、MapMessage、BytesMessage、
StreamMessage 和 ObjectMessage。
// 1.初始化connection工廠 ? ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKE_URL); // 2.創(chuàng)建Connection ? connection = factory.createConnection(); // 3.打開連接 ? connection.start(); // 4.創(chuàng)建session ? session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 5.創(chuàng)建消息目的地 ? Destination destination = session.createQueue(DESTINATION); //6.創(chuàng)建生產(chǎn)者 MessageProducer producer = session.createProducer(destination); //7.配置消息持久化 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //8.發(fā)送消息 sendMessage(session, producer); //9.事務(wù)提交 session.commit();
? // 1.初始化connection工廠 ? ? ? ? ? ? ? ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); ? ?? ? ? ? ? ? ? // 2.創(chuàng)建Connection ? ? ? ? ? ? ? connection = connectionFactory.createConnection(); ? ?? ? ? ? ? ? ? // 3.打開連接 ? ? ? ? ? ? ? connection.start(); ? ?? ? ? ? ? ? ? // 4.創(chuàng)建session ? ? ? ? ? ? ? Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); ? ?? ? ? ? ? ? ? // 5.創(chuàng)建消息目標(biāo) ? ? ? ? ? ? ? Destination destination = session.createTopic("YD"); ? ?? ? ? ? ? ? ? //6.創(chuàng)建消費(fèi)者 ? ? ? ? ? ? ? MessageConsumer consumer = session.createConsumer(destination); ? ?? ? ? ? ? ? ? ? ? ? ? ? ? //7.配置監(jiān)聽 ? ? ? ? ? ? ? consumer.setMessageListener(this); ?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66442.html
摘要:主流消息中間件介紹是由出品,是一個完全支持和規(guī)范的實(shí)現(xiàn)。主流消息中間件介紹是阿里開源的消息中間件,目前也已經(jīng)孵化為頂級項(xiàng)目。 showImg(https://img-blog.csdnimg.cn/20190509221741422.gif);showImg(https://img-blog.csdnimg.cn/20190718204938932.png?x-oss-process=...
摘要:平均每個消費(fèi)者將得到相同數(shù)量的消息。消息確認(rèn)完成任務(wù)可能需要幾秒鐘。為了確保消息不會丟失,支持消息確認(rèn)。沒有任何消息超時(shí)當(dāng)這個消費(fèi)者中止了,將會重新分配消息時(shí)。這是因?yàn)橹皇钦{(diào)度消息時(shí),消息進(jìn)入隊(duì)列。 showImg(https://segmentfault.com/img/bVXNuN?w=332&h=111); 介紹 在上一個 Hello World 教程中,我們編寫了從指定隊(duì)列發(fā)送...
摘要:需求用戶個人消息,平臺消息平臺給所有人發(fā)送消息。原因如果平臺用戶量較大時(shí),假如萬,發(fā)一條系統(tǒng)消息,將要給萬的人發(fā)送一條,就是的消息記錄。千萬級的數(shù)據(jù)表,后期通過索引優(yōu)化,結(jié)構(gòu)優(yōu)化,業(yè)務(wù)邏輯優(yōu)化,避免大量并發(fā)查詢。 說明 本文都是參加工作的實(shí)際情況,希望對大家有所幫助?!?螞蟻爬樹不怕高,有心學(xué)習(xí)不怕老。 需求 1.用戶個人消息,平臺消息(平臺給所有人發(fā)送消息)。2.用戶未讀消息展示,...
摘要:需求用戶個人消息,平臺消息平臺給所有人發(fā)送消息。原因如果平臺用戶量較大時(shí),假如萬,發(fā)一條系統(tǒng)消息,將要給萬的人發(fā)送一條,就是的消息記錄。千萬級的數(shù)據(jù)表,后期通過索引優(yōu)化,結(jié)構(gòu)優(yōu)化,業(yè)務(wù)邏輯優(yōu)化,避免大量并發(fā)查詢。 說明 本文都是參加工作的實(shí)際情況,希望對大家有所幫助?!?螞蟻爬樹不怕高,有心學(xué)習(xí)不怕老。 需求 1.用戶個人消息,平臺消息(平臺給所有人發(fā)送消息)。2.用戶未讀消息展示,...
閱讀 1337·2021-11-22 09:34
閱讀 2201·2021-10-08 10:18
閱讀 1758·2021-09-29 09:35
閱讀 2496·2019-08-29 17:20
閱讀 2168·2019-08-29 15:36
閱讀 3427·2019-08-29 13:52
閱讀 811·2019-08-29 12:29
閱讀 1211·2019-08-28 18:10