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()));
}
}