ActiveMQ的通配符

 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
   

   
   

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值