`
nanjingjiangbiao_T
  • 浏览: 2599796 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ActiveMQ.wildcards

 
阅读更多
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics