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概念介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言棋盘中的正方形,C语言DFS(4)
- 下一篇: android10分区镜像,分区和映像