日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 activemq,activemq概念介绍

發布時間:2025/1/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 activemq,activemq概念介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ActiveMQ概念介紹

是Apache下的開源項目,完全支持JMS1.1和J2EE1.4規范的JMS Provider實現,消息中間件。

消息中間件:

A傳遞消息到B(功能或者系統),有比較強的耦合關系,但是耦合關系會帶來一些問題,需要將AB斷開

但是AB之間有依賴關系,需要找一個第三方M,進行通信。A發送消息到M,B從M獲得消息,進行處理。

使用第三方進行消息傳遞,這種第三方叫做中間件。

作用:

最主要的功能:實現JMS Provider,實現高可用高性能,可伸縮性,易于和安全企業級面向消息服務的系統。

異步操作(調用):

A發送消息到消息中間件,不必等待B消息結果的處理.

特點:

1、 多種語言和協議編寫客戶端。語言: Java、C、C++、C#、Ruby、Perl、Python、PHP。應用協議:OpenWire、Stomp REST、WS Notification、XMPP、AMQP

2、完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務)

3、對spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring2.0的特性

4、通過了常見J2EE服務器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上

5、支持多種傳送協議:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA

6、支持通過JDBC和journal提供高速的消息持久化

7、從設計上保證了高性能的集群,客戶端-服務器,點對點

8、支持Ajax

9、支持與Axis的整合

10、可以很容易得調用內嵌JMS provider,進行測試

消息形式:

1、點對點(queue)

2、一對多(topic)

##########

MOM基本功能:將信息以消息的形式,從一個應用程序傳送到另一個或多個應用程序

MOM主要特點:

1.消息異步接受,類似手機短信行為,消息發送者不需要等待消息接受者的響應,減少軟件多系統集成的耦合度

2.消息可靠接受,確保消息在中間件可靠保存,只有接受方收到消息后才刪除消息,多個消息也可以組成原子事物

應用場景:

多個系統間整合和通訊時候,通常要求:

1。可靠傳輸,數據不能丟失,有時候也要求不能重復傳輸

2.異步傳輸,否則各個系統同步發送接收數據,互相等待,造成系統瓶頸。

簡單的例子

創建兩個工程A和工程B編寫測試類

package activemqA;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

//生產者

public class Sender {

public static void main(String args[]){

Sender sender = new Sender();

sender.sendMessage("hello,activemqB");

}

public void sendMessage(String msg){

ConnectionFactory connectionFactory = null;

Connection connection = null;

Session session = null;

try {

//1.創建連接工廠

connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

//2.得到一個連接

connection = connectionFactory.createConnection();

//3.創建一個Session

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//4.創建目的地

Destination destination = session.createQueue("myQueue");

//5.創建發送者

MessageProducer messageProducer = session.createProducer(destination);

//6.創建文本消息

TextMessage textMessage = session.createTextMessage(msg);

//7.發送消息

messageProducer.send(textMessage);

} catch (JMSException e) {

e.printStackTrace();

}finally{

//8.關閉connection和sessiosn

try {

if(connection !=null){

connection.close();

}

if (session !=null) {

session.close();

}

} catch (JMSException e) {

e.printStackTrace();

}

}

}

}

消費者

package activemqB;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageConsumer;

import javax.jms.Session;

import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;//消費者

public classReceiver {public static voidmain(String args[]){

Receiver receiver= newReceiver();

receiver.receiverMessage();

}public voidreceiverMessage(){

ConnectionFactory connectionFactory= null;

Connection connection= null;

Session session=null;try{//1.創建連接工廠

connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");//2.得到一個連接

connection =connectionFactory.createConnection();//3.創建一個Session

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//4.創建目的地

Destination destination = session.createQueue("myQueue");//5.創建接受者

MessageConsumer messageConsumer =session.createConsumer(destination);//6.打開連接

connection.start();//7.接收消息

TextMessage textMessage = (TextMessage) messageConsumer.receive(1000);//8.輸出驗證

System.out.println("接收到的消息為:"+textMessage.getText());

}catch(JMSException e) {

e.printStackTrace();

}finally{try{if (connection !=null) {

connection.close();

}if (session !=null) {

session.close();

}

}catch(JMSException e) {

e.printStackTrace();

}

}

}

}

總結

以上是生活随笔為你收集整理的c语言 activemq,activemq概念介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。