锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Apache ActiveMQ鐢ㄩ旓細 jms鏈変袱縐嶆秷鎭満鍒朵竴縐嶆槸娑堟伅闃熷垪錛屼竴縐嶆槸娑堟伅璁㈤槄錛岀畝鍗曟潵璇村氨鏄竴瀵逛竴錛屽拰涓瀵瑰銆?/p> 涓瀵逛竴鍙互鐪嬪仛 涓緇勬秷鎭搴斾竴涓?鎴?澶氫釜娑堟伅鑾峰彇鏈嶅姟錛屽叾涓瘡涓涓崟鐙殑娑堟伅浣撻兘鍙細琚竴涓秷鎭幏鍙栨湇鍔¤幏鍙栥?/p> 涓瀵瑰鍙互鐪嬪仛 涓緇勬秷鎭搴斾竴涓?鎴?澶氫釜鎺ユ敹鏈嶅姟錛屽叾涓瘡涓涓崟鐙殑娑堟伅浣撳彂鍑轟箣鍚庨兘浼氳鎵鏈夌殑鎺ユ敹鏈嶅姟鏀跺埌涓嬈°?/p> 鏍規嵁浠ヤ笂涓ょ妯″紡鎴戜滑鍙互鍦?鍙戦佺煭淇$殑鏃跺欎嬌鐢?娑堟伅闃熷垪妯″紡銆備篃鍙互鍦ㄥ垎甯冨紡鐨勬椂鍊欎嬌鐢ㄦ秷鎭槦鍒楁ā寮?/p> 娑堟伅璁㈤槄妯″紡鐢ㄧ殑涓嶆槸寰堝浣嗘槸錛屽湪鍒嗗竷寮忎腑涔熷彲浠ュ簲鐢ㄥ悓鏃跺彲浠ョ粨鍚圵ebService榪涜浣跨敤銆備緥濡備竴涓柊闂婚渶瑕佸彂緇欏涓郴緇熷唴鐨勫崟鐙湇鍔°?/p> 鍙娣卞埢鐞嗚В浜嗕粬鐨勫鐞嗘満鍒跺湪寰堝鎯呭喌涓嬮兘鍙互搴旂敤錛屽鏋滃疄鍦ㄤ笉鍠滄榪欑鏂瑰紡涔熷彲浠ラ伒鐓ava JMS鐨凙PI鐢ㄧ嚎紼嬭嚜宸辨ā鎷熸秷鎭槦鍒楁満鍒躲?/p> 鎴戜釜浜鴻涓哄尯鍒笉鏄緢澶с傛洿浣曞喌寰堝鏃跺橫Q鐨勫緢澶氬姛鑳芥垜浠湁娌℃湁鐢ㄥ埌錛岀敤榪欎箞涓ぇ瀹朵紮灝辨槸涓轟簡鍥劇渷浜嬨?/p> 榪欓噷澶囨敞涓涓嬶細鎸夊師鏈夎瀹氬湪鍒涘緩榪炴帴鐨勬椂鍊橫Q鏄笉鍙戦佹秷鎭殑銆?/span> 涓嬮潰鎴戣浠ヤ笅浣跨敤鏂瑰紡錛?/p> 鏈漢鐩墠鍙細JAVA 闇瑕佺殑鍖呬負 activemq-all-5.2.0.jar spring-core-2.5.5.jar 榪欎簺搴旇灝辮凍澶熶簡 鎴戝仛嫻嬭瘯鐨勬椂鍊欑敤鐨勫寘涓?/p> activemq-all-5.2.0.jar 鍩烘湰閰嶇疆 涓嬭澆 Apache ActiveMQ 涓嶇煡閬撶殑googlean 瀹夎鏈嶅姟鐨勬枃浠跺湪 apache-activemq-5.5.0\bin\win32 鐩綍涓嬮潰Linux鐗堜篃涓鏍峰ぇ鍚屽皬寮?榪愯.sh鏂囦歡灝卞ソ錛屽鏋滃嚭鐜伴棶棰樿鎵撳紑榪愯鏂囦歡鏌ョ湅閲岄潰鍙傛暟 activemq.bat鐩存帴榪愯鍚姩鏈嶅姟 InstallService.bat瀹夎鎴恮indos鏈嶅姟 UninstallService.bat鍗歌澆windos鏈嶅姟 瀹夎鎴愬姛鍚?/p> 鍦ㄨ繍琛屼腑 cmd netstat -an|find “61616” 鏌ヨ绔彛鏄惁宸茬粡鎵撳紑 D:\apache-activemq-5.5.0\conf\activemq.xml 鏈枃浠朵負鏈嶅姟閰嶇疆鏂囦歡 <transportConnectors> 榪欎竴欏逛負绔彛璁劇疆 榛樿涓?“61616” 鐩墠浠indos涓轟緥 鎶妔pring鍜岄」鐩仈緋昏搗鏉?/p> 絎竴姝ヤ負web.xml <?xml version="1.0" encoding="UTF-8"?> <!-- 閰嶇疆Spring--> 鍏堣 涓涓嬫秷鎭槦鍒楋紙涔熷氨鏄竴瀵逛竴錛?/p> NewFileMQ.xml <?xml version="1.0" encoding="UTF-8"?> <!-- 閰嶇疆JMS閾炬帴妯$増 --> 鍙戦佹秷鎭殑綾?/p> package message; package message; 鍙戝竷鑰呮ā寮?/p> 鍏跺疄涓ょ妯″紡鍏跺畠璁劇疆鍩烘湰鐩稿悓 鍞竴涓嶇敤鐨勫氨鏄?Spring閰嶇疆鏂囦歡涓妸涓涓嬭繖孌墊浛鎹竴涓嬪氨鍙互浜?/p> <!-- 鍙戦佹秷鎭殑鐩殑鍦幫紙涓涓槦鍒楋級 --> 1,欏圭洰涓墍寮曠殑鍖?/span> 2錛屽彂閫佸拰鎺ュ彈娑堟伅鐨勪唬鐮侊紝姣忎釜閮芥槸涓涓狫unit鍑芥暟 package test; import javax.jms.Destination; import junit.framework.TestCase; import org.apache.xbean.spring.context.ClassPathXmlApplicationContext; public class ActivemqTest extends TestCase { ApplicationContext ctx = new FileSystemXmlApplicationContext( template.send(destination, new MessageCreator() { @Test public static void main(String[] args) throws Exception{ 3錛宎pplicationContext.xml鏂囦歡鍐呭 <?xml version="1.0" encoding="UTF-8"?>
log4j-1.2.14.jar
spring-beans-2.5.5.jar
spring-context-2.5.5.jar
spring-jms-2.5.5.jar
commons-pool-1.4.jar
log4j-1.2.14.jar
spring-beans-2.5.5.jar
spring-context-2.5.5.jar
spring-core-2.5.5.jar
spring-jms-2.5.5.jar
spring-tx-2.5.5.jar
spring-web-2.5.5.jar
spring-webmvc-2.5.5.jar
xbean-spring-3.4.jar
msbase.jar
mssqlserver.jar
msutil.jar
mysql-connector-java-5.0.4-bin.jar
mysql.jar
<transportConnector name="openwire" uri="tcp://0.0.0.0:61618"/>
</transportConnectors>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/NewFileMQ.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61618"/>
</bean>
<!-- 閰嶇疆JMS妯$増 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="pubSubDomain" value="false" />
<property name="explicitQosEnabled" value="true" /> <!-- deliveryMode, priority, timeToLive 鐨勫紑鍏籌紝瑕佺敓鏁堬紝蹇呴』閰嶇疆涓簍rue錛岄粯璁alse-->
<property name="deliveryMode" value="1" /> <!-- 鍙戦佹ā寮?nbsp; DeliveryMode.NON_PERSISTENT=1:闈炴寔涔?; DeliveryMode.PERSISTENT=2:鎸佷箙-->
</bean>
<!-- 鍙戦佹秷鎭殑鐩殑鍦幫紙涓涓槦鍒楋級 -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- 璁劇疆娑堟伅闃熷垪鐨勫悕瀛?-->
<constructor-arg index="0" value="HelloJmsQueue"/>
</bean>
<bean id="sender" class="message.Sender">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
<!--娑堟伅鑾峰彇綾?->
<bean id="receive" class="message.Receiver"></bean>
<!--緇欐秷鎭幏鍙栫被鍔犱釜鐩戝惉璁╀粬鑳借嚜鍔ㄨ幏鍙栨秷鎭?->
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="destination" ref="destination"></property>
<property name="messageListener" ref="receive"></property>
</bean>
</beans>
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class Sender {
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void send(final String text){
System.out.println("---Send:"+text);
jmsTemplate.send(new MessageCreator(){
public Message createMessage(Session arg0) throws JMSException {
// TODO Auto-generated method stub
return arg0.createTextMessage(text);
}
});
}
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
Destination destination = (Destination) ctx.getBean("destination");
for(int i=0;i<10;i++){
final String dd = i+"";
//jmsTemplate.convertAndSend(destination,"鍙戦佹秷鎭細 ActiveMQ Text Message錛?+dd);
template.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("鍙戦佹秷鎭細 ActiveMQ Text Message錛?+dd);
}
});
}
System.out.println("鎴愬姛鍙戦佷簡涓鏉MS娑堟伅");
}
}
鎺ユ敹娑堟伅綾?/p>
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
public class Receiver implements MessageListener {
//鎺ュ惉鎺ユ敹
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage text = (TextMessage) message;
try {
System.out.println("Receive:絎洓涓帴鏀惰? + text.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//鎵嬪姩鎺ユ敹
public static void main(String[] args) throws JMSException {
ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
Destination destination = (Destination) ctx.getBean("destination");
while (true) {
TextMessage txtmsg = (TextMessage) template.receive(destination);
if (null != txtmsg)
System.out.println("鏀跺埌娑堟伅鍐呭涓? " + txtmsg.getText());
else
break;
}
}
}
<bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
<!-- 璁劇疆娑堟伅闃熷垪鐨勫悕瀛?-->
<constructor-arg index="0" value="HelloJmsTopic"/>
</bean>
http://hi.baidu.com/wu_chao/blog/item/1d9aa2772e663107b051b9cc.html
]]>
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
@Test
public void testJmsTemplateSend() {
"WebRoot/WEB-INF/applicationContext.xml");
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
Destination destination = (Destination) ctx.getBean("destination");
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("鍙戦佹秷鎭細Hello ActiveMQ Text Message錛?);
}
});
System.out.println("鎴愬姛鍙戦佷簡涓鏉MS娑堟伅");
}
public void testJmsTemplateReceive() throws JMSException {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"WebRoot/WEB-INF/applicationContext.xml");
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
Destination destination = (Destination) ctx.getBean("destination");
while (true) {
TextMessage txtmsg = (TextMessage) template.receive(destination);
if (null != txtmsg)
System.out.println("鏀跺埌娑堟伅鍐呭涓? " + txtmsg.getText());
else
break;
}
}
new ActivemqTest().testJmsTemplateSend();
new ActivemqTest().testJmsTemplateReceive();
}
}
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 閰嶇疆JMS榪炴帴宸ュ巶 -->
<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<!-- 閰嶇疆JMS妯$増 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
<!-- 鍙戦佹秷鎭殑鐩殑鍦幫紙涓涓槦鍒楋級 -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- Set the Queue Name -->
<constructor-arg index="0" value="HelloWorldQueue"/>
</bean>
</beans>
http://blog.csdn.net/hnzhangshilong/article/details/6629780
]]>
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MapSender {
private static final int SEND_NUMBER = 5;
public static void main(String[] args) {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
Connection connection = null;
Session session;
Destination destination = null;
MessageProducer messageProducer;
try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("FirstQueue");
messageProducer=session.createProducer(destination);
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
MapMessage map=session.createMapMessage();
map.setBoolean("flag", true);
map.setDouble("dou", 1.01);
map.setInt("zx", 88);
map.setString("zifu", "zzzzzz");
messageProducer.send(map);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package org.abin.lee.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MapReceiver {public static void main(String[] args) {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
Connection connection = null;
Session session;
Destination destination;
MessageConsumer consumer;
try {
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while(true){
MapMessage map=(MapMessage)consumer.receive(500000);
if (null != map) {
boolean flag=map.getBoolean("falg");
System.out.println("AcitveMQ 鎺ユ敹鍒扮殑娑堟伅 flag="+flag);
double dou=map.getDouble("dou");
System.out.println("AcitveMQ 鎺ユ敹鍒扮殑娑堟伅 dou="+dou);
int zx=map.getInt("zx");
System.out.println("AcitveMQ 鎺ユ敹鍒扮殑娑堟伅 zx="+zx);
String zifu=map.getString("zifu");
System.out.println("AcitveMQ 鎺ユ敹鍒扮殑娑堟伅 zifu="+zifu);
}else
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
鍦?Java 閲屾湁 JMS 鐨勫涓疄鐜般傚叾涓?apache 涓嬬殑 ActiveMQ 灝辨槸涓嶉敊鐨勯夋嫨銆侫ctiveMQ 鏄疉pache鍑哄搧錛屾渶嫻佽鐨勶紝鑳藉姏寮哄姴鐨勫紑婧愭秷鎭葷嚎銆侫ctiveMQ 鏄竴涓畬鍏ㄦ敮鎸丣MS1.1鍜孞2EE 1.4瑙勮寖鐨?JMS Provider瀹炵幇銆傝繖閲岀ず渚嬩笅浣跨敤 ActiveMQ
鐢?ActiveMQ 鏈濂借繕鏄簡瑙d笅 JMS
JMS 鍏叡 | 鐐瑰鐐瑰煙 | 鍙戝竷/璁㈤槄鍩?/strong> |
ConnectionFactory | QueueConnectionFactory | TopicConnectionFactory |
Connection | QueueConnection | TopicConnection |
Destination | Queue | Topic |
Session | QueueSession | TopicSession |
MessageProducer | QueueSender | TopicPublisher |
MessageConsumer | QueueReceiver | TopicSubscriber |
JMS 瀹氫箟浜嗕袱縐嶆柟寮忥細Quere錛堢偣瀵圭偣錛夛紱Topic錛堝彂甯?璁㈤槄錛夈?/p>
ConnectionFactory 鏄繛鎺ュ伐鍘傦紝璐熻矗鍒涘緩Connection銆?/p>
Connection 璐熻矗鍒涘緩 Session銆?/p>
Session 鍒涘緩 MessageProducer錛堢敤鏉ュ彂娑堟伅錛?鍜?MessageConsumer錛堢敤鏉ユ帴鏀舵秷鎭級銆?/p>
Destination 鏄秷鎭殑鐩殑鍦般?/p>
璇︾粏鐨勫彲浠ョ綉涓婃壘浜?JMS 瑙勮寖錛堟湁涓枃鐗堬級銆?/p>
涓嬭澆 apache-activemq-5.3.0銆?a target="_blank">http://activemq.apache.org/download.html 錛岃В鍘嬶紝鐒跺悗鍙屽嚮 bin/activemq.bat銆傝繍琛屽悗錛屽彲浠ュ湪 http://localhost:8161/admin 瑙傚療銆備篃鏈?demo錛?http://localhost:8161/demo 銆傛妸 activemq-all-5.3.0.jar 鍔犲叆 classpath銆?/p>
Jms 鍙戦?浠g爜錛?/p>public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageProducer producer = session.createProducer(destination);
for(int i=0; i<3; i++) {
MapMessage message = session.createMapMessage();
message.setLong("count", new Date().getTime());
Thread.sleep(1000);
//閫氳繃娑堟伅鐢熶駭鑰呭彂鍑烘秷鎭?nbsp;
producer.send(message);
}
session.commit();
session.close();
connection.close();
}
Jms 鎺ユ敹浠g爜錛?/p>
public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
Connection connection = connectionFactory.createConnection();
connection.start();
final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("my-queue");
MessageConsumer consumer = session.createConsumer(destination);
int i=0;
while(i<3) {
i++;
MapMessage message = (MapMessage) consumer.receive();
session.commit();
//TODO something....
System.out.println("鏀跺埌娑堟伅錛? + new Date(message.getLong("count")));
}
session.close();
connection.close();
}
JMS浜旂娑堟伅鐨勫彂閫?鎺ユ敹鐨勪緥瀛?/font>
杞嚜錛?/font>http://chenjumin.javaeye.com/blog/687124
1銆佹秷鎭彂閫?/p>//榪炴帴宸ュ巶
ConnectionFactory connFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
//榪炴帴鍒癑MS鎻愪緵鑰?nbsp;
Connection conn = connFactory.createConnection();
conn.start();
//浜嬪姟鎬т細璇濓紝鑷姩紜娑堟伅
Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
//娑堟伅鐨勭洰鐨勫湴
Destination destination = session.createQueue("queue.hello");
//娑堟伅鐢熶駭鑰?nbsp;
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //涓嶆寔涔呭寲
//鏂囨湰娑堟伅
TextMessage textMessage = session.createTextMessage("鏂囨湰娑堟伅");
producer.send(textMessage);
//閿煎娑堟伅
MapMessage mapMessage = session.createMapMessage();
mapMessage.setLong("age", new Long(32));
mapMessage.setDouble("sarray", new Double(5867.15));
mapMessage.setString("username", "閿煎娑堟伅");
producer.send(mapMessage);
//嫻佹秷鎭?nbsp;
StreamMessage streamMessage = session.createStreamMessage();
streamMessage.writeString("streamMessage嫻佹秷鎭?);
streamMessage.writeLong(55);
producer.send(streamMessage);
//瀛楄妭娑堟伅
String s = "BytesMessage瀛楄妭娑堟伅";
BytesMessage bytesMessage = session.createBytesMessage();
bytesMessage.writeBytes(s.getBytes());
producer.send(bytesMessage);
//瀵硅薄娑堟伅
User user = new User("cjm", "瀵硅薄娑堟伅"); //User瀵硅薄蹇呴』瀹炵幇Serializable鎺ュ彛
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setObject(user);
producer.send(objectMessage);
session.commit(); //鍦ㄤ簨鍔℃т細璇濅腑錛屽彧鏈塩ommit涔嬪悗錛屾秷鎭墠浼氱湡姝e埌杈劇洰鐨勫湴
producer.close();
session.close();
conn.close();
2銆佹秷鎭帴鏀訛細閫氳繃娑堟伅鐩戝惉鍣ㄧ殑鏂瑰紡鎺ユ敹娑堟伅
鍘誨畼鏂圭綉绔欎笅杞斤細http://activemq.apache.org/
瑙e帇緙゛pache-activemq-5.5.1-bin.zip錛岀劧鍚庡弻鍑籥pache-activemq-5.5.1\bin\activemq.bat榪愯ActiveMQ紼嬪簭銆?/p>
鍚姩ActiveMQ浠ュ悗錛岀櫥闄嗭細http://localhost:8161/admin/錛屽垱寤轟竴涓猀ueue錛屽懡鍚嶄負FirstQueue銆?/p>
鍒涘緩project錛欰ctiveMQ-5.5錛屽茍瀵煎叆apache-activemq-5.5.1\lib鐩綍涓嬮渶瑕佺敤鍒扮殑jar鏂囦歡錛岄」鐩粨鏋勫涓嬪浘鎵紺猴細
3.1.Sender.java
package com.xuwei.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Sender {
private static final int SEND_NUMBER = 5;
public static void main(String[] args) {
// ConnectionFactory 錛氳繛鎺ュ伐鍘傦紝JMS 鐢ㄥ畠鍒涘緩榪炴帴
ConnectionFactory connectionFactory;
// Connection 錛欽MS 瀹㈡埛绔埌JMS Provider 鐨勮繛鎺?br /> Connection connection = null;
// Session錛?涓涓彂閫佹垨鎺ユ敹娑堟伅鐨勭嚎紼?br /> Session session;
// Destination 錛氭秷鎭殑鐩殑鍦?娑堟伅鍙戦佺粰璋?
Destination destination;
// MessageProducer錛氭秷鎭彂閫佽?br /> MessageProducer producer;
// TextMessage message;
// 鏋勯燙onnectionFactory瀹炰緥瀵硅薄錛屾澶勯噰鐢ˋctiveMq鐨勫疄鐜癹ar
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
// 鏋勯犱粠宸ュ巶寰楀埌榪炴帴瀵硅薄
connection = connectionFactory.createConnection();
// 鍚姩
connection.start();
// 鑾峰彇鎿嶄綔榪炴帴
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// 鑾峰彇session娉ㄦ剰鍙傛暟鍊紉ingbo.xu-queue鏄竴涓湇鍔″櫒鐨剄ueue錛岄』鍦ㄥ湪ActiveMq鐨刢onsole閰嶇疆
destination = session.createQueue("FirstQueue");
// 寰楀埌娑堟伅鐢熸垚鑰呫愬彂閫佽呫?br /> producer = session.createProducer(destination);
// 璁劇疆涓嶆寔涔呭寲錛屾澶勫涔狅紝瀹為檯鏍規嵁欏圭洰鍐沖畾
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 鏋勯犳秷鎭紝姝ゅ鍐欐錛岄」鐩氨鏄弬鏁幫紝鎴栬呮柟娉曡幏鍙?br /> sendMessage(session, producer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
public static void sendMessage(Session session, MessageProducer producer)
throws Exception {
for (int i = 1; i <= SEND_NUMBER; i++) {
TextMessage message = session
.createTextMessage("ActiveMq 鍙戦佺殑娑堟伅" + i);
// 鍙戦佹秷鎭埌鐩殑鍦版柟
System.out.println("鍙戦佹秷鎭細" + "ActiveMq 鍙戦佺殑娑堟伅" + i);
producer.send(message);
}
}
}
3.2.Receiver.java
package com.xuwei.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Receiver {
public static void main(String[] args) {
// ConnectionFactory 錛氳繛鎺ュ伐鍘傦紝JMS 鐢ㄥ畠鍒涘緩榪炴帴
ConnectionFactory connectionFactory;
// Connection 錛欽MS 瀹㈡埛绔埌JMS Provider 鐨勮繛鎺?br /> Connection connection = null;
// Session錛?涓涓彂閫佹垨鎺ユ敹娑堟伅鐨勭嚎紼?br /> Session session;
// Destination 錛氭秷鎭殑鐩殑鍦?娑堟伅鍙戦佺粰璋?
Destination destination;
// 娑堣垂鑰咃紝娑堟伅鎺ユ敹鑰?br /> MessageConsumer consumer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
// 鏋勯犱粠宸ュ巶寰楀埌榪炴帴瀵硅薄
connection = connectionFactory.createConnection();
// 鍚姩
connection.start();
// 鑾峰彇鎿嶄綔榪炴帴
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// 鑾峰彇session娉ㄦ剰鍙傛暟鍊紉ingbo.xu-queue鏄竴涓湇鍔″櫒鐨剄ueue錛岄』鍦ㄥ湪ActiveMq鐨刢onsole閰嶇疆
destination = session.createQueue("FirstQueue");
consumer = session.createConsumer(destination);
while (true) {
//璁劇疆鎺ユ敹鑰呮帴鏀舵秷鎭殑鏃墮棿錛屼負浜嗕究浜庢祴璇曪紝榪欓噷璋佸畾涓?00s
TextMessage message = (TextMessage) consumer.receive(100000);
if (null != message) {
System.out.println("鏀跺埌娑堟伅" + message.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
}
鍥犱負鏄湪鍗曟満涓婃祴璇曪紝鎵浠ラ渶瑕佸紑鍚袱涓猠clipse錛屾瘡涓涓猠clipse閮芥湁鑷韓鐨剋orkspace銆傛垜浠湪eclipse1涓繍琛孯eceiver錛屽湪eclipse2涓繍琛孲ender銆?/p>
鍒氬紑濮媏clipse1涓繍琛孯eceiver浠ュ悗console浠嬮潰娌℃湁浠諱綍淇℃伅錛屽湪eclipse2涓繍琛孲ender浠ュ悗錛宔clipse2涓殑console鏄劇ず濡備笅淇℃伅錛?/p>
鍙戦佹秷鎭細ActiveMq 鍙戦佺殑娑堟伅1
鍙戦佹秷鎭細ActiveMq 鍙戦佺殑娑堟伅2
鍙戦佹秷鎭細ActiveMq 鍙戦佺殑娑堟伅3
鍙戦佹秷鎭細ActiveMq 鍙戦佺殑娑堟伅4
鍙戦佹秷鎭細ActiveMq 鍙戦佺殑娑堟伅5
鑰屽洖鍒癳clipse1涓彂鐜癱onsole鐣岄潰鍑虹幇濡備笅淇℃伅錛?/p>
鏀跺埌娑堟伅ActiveMq 鍙戦佺殑娑堟伅1
鏀跺埌娑堟伅ActiveMq 鍙戦佺殑娑堟伅2
鏀跺埌娑堟伅ActiveMq 鍙戦佺殑娑堟伅3
鏀跺埌娑堟伅ActiveMq 鍙戦佺殑娑堟伅4
鏀跺埌娑堟伅ActiveMq 鍙戦佺殑娑堟伅5
浠婂ぉ鍙戠幇嫻嬭瘯騫朵笉闇瑕佸紑鍚袱涓猠clipse錛屽湪涓涓猠clipse涓嬮〉鍙互鍚姩澶氫釜紼嬪簭錛屽茍涓旀湁澶氫釜console錛屽湪涓婇潰鐨凴eceiver.java涓紝璁劇疆涓涓緝澶х殑鏃墮棿錛屾瘮濡俽eceive(500000)錛屽涓嬩唬鐮佹墍紺猴細
TextMessage message = (TextMessage) consumer.receive(500000);
榪欎釜鏃跺欒繍琛孯eceiver.java鐨勮瘽錛屼細浣垮緱榪欎釜Receiver.java涓鐩磋繍琛?00縐掞紝鍦╡clipse涓彲浠ュ彂鐜幫細
鐐瑰嚮閭d釜綰㈣壊鏂瑰潡鍙互鎵嬪姩鍋滄榪愯紼嬪簭銆?/p>
榪愯鐜﹔eceiver浠ュ悗鎴戜滑鍦ㄨ繍琛宻ender錛屽湪榪愯瀹宻ender浠ュ悗錛屾垜浠鍒囨崲鍒皉eceiver鐨刢onsole錛屽涓嬪浘鎵紺猴細
http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html