ActiveMQ的通配符官方介绍地址:http://activemq.apache.org/wildcards.html
1、 . 用了分隔地址。
2、* 某段地址的所有字符。
3、> 某段地址之后的所有字符。
1、的例子一个QueueName:Q.T.Test。
Q.T.Test就是当OnMessage监听这个地址的时候,只能收到这个发送到这个地址的得消息。
2、的例子一个QueueName:Q.*.Test,Q.*.*。
Q.*.Test就是在监听的时候收到(Q.T.Test,Q.T1.Test,Q.T2.Test中间的所有字符的地址)的消息。
3、的例子一个QueueName:Q.>,Q.T.>。
Q.>就是当监听的时候收到(Q.T,Q.T.Test,Q.T.Test,T之后的字符的)的消息。
下面是测试代码,发送使用composite destinations( 类似群发方式)官方参考地址:http://activemq.apache.org/composite-destinations.html
接收使用同步接收消息,如果用异步接收需要实现监听:
package testsend;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
public class MessageService {
public static void main(String[] args) throws Exception{
String url = "tcp://127.0.0.1:61616";
String userName = "test";
String password = "test";
MessageService messageService = new MessageService();
System.out.println("send message....");
messageService.sendMessage(url,userName, password);
System.out.println("receive message....");
messageService.receiveMessage(url, userName, password);
}
public void sendMessage(String url,String userName,String password)throws Exception{
ActiveMQConnectionFactory connf = new ActiveMQConnectionFactory(url);
Connection conn = connf.createConnection(userName, password);
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination dest = new ActiveMQQueue("Test.A,Test.B,Test.C");
Message msg = session.createTextMessage("test");
MessageProducer mp = session.createProducer(dest);
mp.send(msg);
System.out.println("send ok....");
mp.close();
session.close();
conn.close();
}
public void receiveMessage(String url,String userName,String password)throws Exception{
ActiveMQConnectionFactory connf = new ActiveMQConnectionFactory(url);
Connection conn = connf.createConnection(userName, password);
conn.setClientID("msgTest");
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination dest = session.createQueue("Test.*");
MessageConsumer mc = session.createConsumer(dest);
int mu = 3;
for(int i=0;i<mu;i++){
Message message = mc.receive(1000*10);
System.out.println("接受次数:"+(i+1));
if(message!=null){
TextMessage tm = (TextMessage)message;
System.out.println("QueueName:"+tm.getJMSDestination());
System.out.println("mesg"+tm.getText());
}else{
System.out.println("message is null.....");
}
}
mc.close();
session.close();
conn.close();
}
测试结果:
send message....
send ok....
receive message....
接受次数:1
QueueName:queue://Test.C
mesg:test
接受次数:2
QueueName:queue://Test.A
mesg:test
接受次数:3
QueueName:queue://Test.B
mesg:test
分享到:
相关推荐
SpringActiveMQ.rar
NULL 博文链接:https://baobeituping.iteye.com/blog/407104
activemq思维导图2019 当前使用较多的消息中间件有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,本次以Apache的ActiveMQ作为切入点,分为基础/实战/面试上中下三大部分,将带着同学们从零基础入门到熟练...
activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml
面向字节_ActiveMQ.pdf
全版的Manning.ActiveMQ.in.Action.Mar.2011,非样章版
linux 下apache-activemq.zip
里面包含libapr-1.dll、libapriconv-1.lib、libaprutil-1.dll、libaprutil-1.lib等activemq相关包。编译环境为VS2010+64位+realease
activemq.rar java
ActiveMQ.pdf ActiveMQ in Action
ActiveMQ源代码,包括开发想到和开发例子。
ActiveMQ.zip
activeMQ.pdf
Apache ActiveMQ是Apache软件基金会的一个开源项目,是一个基于消息的通信中间件。ActiveMQ是JMS的一个具体实现,支持JMS的两种消息模型。ActiveMQ使用AMQP协议集成多平台应用,使用STOMP协议通过websockets在Web...
ActiveMq 消息队列 面试消息队列
type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="vm://shirdrnUrl" brokerName=...
CentOS7安装ActiveMQ
ActiveMQ实战 英文原版 附带有随书的原代码
activemq, Apache ActiveMQ镜像 欢迎来到 Apache ActiveMQis是一个高性能的Apache 2.0许可以消息代理和 JMS 1.1实现。正在启动要帮助你入门,请尝试以下链接:入门http://activemq.apache.org/version-