springboot 使用rabbitmq 入门例子

安装rabbitmq就不提了,直接看demo吧

首先是配置

spring.application.name=springboot-rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.virtual-host=/

config配置queues,topic,exchanges等

@Bean
	public Queue hellpQueue(){
		return new Queue("hello");
	}
	
	 @Bean
	    public Queue userQueue() {
	        return new Queue("user");
	    }
	    
	    //===============以下是验证topic Exchange的队列==========
	    @Bean
	    public Queue queueMessage() {
	        return new Queue("topic.message");
	    }

	    @Bean
	    public Queue queueMessages() {
	        return new Queue("topic.messages");
	    }
	  //===============以上是验证topic Exchange的队列==========
	    
	    
	    //===============以下是验证Fanout Exchange的队列==========
	    @Bean
	    public Queue AMessage() {
	        return new Queue("fanout.A");
	    }

	    @Bean
	    public Queue BMessage() {
	        return new Queue("fanout.B");
	    }

	    @Bean
	    public Queue CMessage() {
	        return new Queue("fanout.C");
	    }
	    //===============以上是验证Fanout Exchange的队列==========
	    

	    @Bean
	    TopicExchange exchange() {
	        return new TopicExchange("exchange");
	    }
	    @Bean
	    FanoutExchange fanoutExchange() {
	        return new FanoutExchange("fanoutExchange");
	    }

	    /**
	     * 将队列topic.message与exchange绑定,binding_key为topic.message,就是完全匹配
	     * @param queueMessage
	     * @param exchange
	     * @return
	     */
	    @Bean
	    Binding bindingExchangeMessage(Queue queueMessage, TopicExchange exchange) {
	        return BindingBuilder.bind(queueMessage).to(exchange).with("topic.message");
	    }

	    /**
	     * 将队列topic.messages与exchange绑定,binding_key为topic.#,模糊匹配
	     * @param queueMessage
	     * @param exchange
	     * @return
	     */
	    @Bean
	    Binding bindingExchangeMessages(Queue queueMessages, TopicExchange exchange) {
	        return BindingBuilder.bind(queueMessages).to(exchange).with("topic.#");
	    }
	    
	    @Bean
	    Binding bindingExchangeA(Queue AMessage,FanoutExchange fanoutExchange) {
	        return BindingBuilder.bind(AMessage).to(fanoutExchange);
	    }

	    @Bean
	    Binding bindingExchangeB(Queue BMessage, FanoutExchange fanoutExchange) {
	        return BindingBuilder.bind(BMessage).to(fanoutExchange);
	    }

	    @Bean
	    Binding bindingExchangeC(Queue CMessage, FanoutExchange fanoutExchange) {
	        return BindingBuilder.bind(CMessage).to(fanoutExchange);
	    }

简单queues

sender:

@Component
public class HelloSender {
	 
	@Autowired
	private AmqpTemplate amqpTemplate;
	
	public void send(String msg){
		String smsg=msg+new Date();
		System.out.println("Sender1 : " + smsg);
		this.amqpTemplate.convertAndSend("hello", smsg);
	}
}

customer:

@Component
@RabbitListener(queues = "hello")
public class HelloCustomer {
	
	@RabbitHandler
	public void process(String hello){
		System.out.println("Receiver1  : " + hello);
	}
	
}

如果需要一对多,或者多对多,只需要复制一个customer就可以了,代码一样,就不介绍了

然后就是对象类型的传输:

建一个实体类User,切记实现implements Serializable序列化一下,也可以在方法里序列化,不过比较麻烦

sender:

public void sendUser() {
        User user=new User();
        user.setName("hzb");
        user.setPass("123456789");
        System.out.println("user send : " + user.getName()+"/"+user.getPass());
        this.amqpTemplate.convertAndSend("user", user);
    }

customer:

@Component
@RabbitListener(queues = "user")
public class UserReceiver {

    @RabbitHandler
    public void process(User user) {
        System.out.println("user receive  : " + user.getName()+"/"+user.getPass());
    }

}

本文章只介绍简单队列,exchanges和topic等请看下一篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值