RabbitMQ简单例子

pom.xml

<!--rabbit-mq-->
    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
        <version>1.4.5.RELEASE</version>
    </dependency>

RabbitmqTest.java

public class RabbitmqTest {

    public static void main(String[] args) {
        //建立连接
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("127.0.0.1",5672);
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setVirtualHost("/");
        //创建管理,创建vhost,queue,exchange,binding
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        //helper,主要发送消息到rabbitmq
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        Map<String,Object> arg3,arg2,arg = new HashMap<String,Object>(); arg2 = arg; arg3 = arg;
        arg.put("queueArg","queueuArgO");
        arg2.put("exArg","exArgO");
        arg3.put("bindArg","bindArgO");
        //新建队列,暂时是声明,没有在rabbitmq服务器创建
        Queue testQ = new Queue("testQ",true,false,false, arg);
        //新建路由
        TopicExchange topicExchange = new TopicExchange("testEx",true,false, arg2);
        //新建绑定关系
        Binding binding = new Binding("testQ", Binding.DestinationType.QUEUE,"testEx","testQ", arg3);
        //提交新建队列,路由,绑定等命令到服务器,使变更生效
        rabbitAdmin.declareQueue(testQ);
        rabbitAdmin.declareExchange(topicExchange);
        rabbitAdmin.declareBinding(binding);
        //发送消息,网页http://127.0.0.1:15672  登录名与密码 guest,点击队列管理页queue,看到列表testQ有Ready数100,等待被消费者获取
        for (int i=0;i<500;i++)
            rabbitTemplate.send("testEx","testQ",new Message("this is from Rabbittest..................".getBytes(), new MessageProperties()));

        System.out.println("end");
        connectionFactory.destroy(); //没有destroy,进程不关闭
    }
}

RabbitmqTest2.java

public class RabbitmqTest2 implements MessageListener {
    public static void main(String[] args) {
        
        //建立监听器
        SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer(connectionFactory);
        SimpleMessageListenerContainer listenerContainer2 = new SimpleMessageListenerContainer(connectionFactory);
        
        //创建消费者,要实现MessageListener接口
        RabbitmqTest2 rabbitmqTest2 = new RabbitmqTest2();
        RabbitmqTest2 rabbitmqTest3 = new RabbitmqTest2();
        //设置消息处理的消费者
        listenerContainer.setMessageListener(rabbitmqTest2);
        listenerContainer2.setMessageListener(rabbitmqTest3);
        //开始监听,有消息会自动调用上面的消费者
        listenerContainer.start();
        listenerContainer2.start();
        //listenerContainer.shutdown(); //关闭监听进程
        System.out.println("end2");
        connectionFactory.destroy();//没有destroy,进程不关闭
    }

    public void onMessage(Message message) {
        //System.out.println("msg:" +message.toString());
        System.out.println(new String(message.getBody()));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值