package com.springboot.rabbitmq.rabbit;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;

/**
 * Created by Jack-Wang on 2017/11/21.
 */
@Component
public class Sender {
    @Value("${mq.exchange}")
    private String exchange;
    @Value("${mq.route_queue_key}")
    private String route_queue_key;


    @Autowired
    private AmqpTemplate amqpTemplate;

    public void send(){
        String msg = "测试topicExchange消息:" + new Date();
        System.out.println("send发送消息:"+msg+"exchange:"+exchange);
        System.out.println("exchange:"+exchange);

        amqpTemplate.convertAndSend(exchange,route_queue_key,msg);
    }

    //方法的第一个参数是交换机名称,第二个参数是发送的key,第三个参数是内容,
    // RabbitMQ将会根据第二个参数去寻找有没有匹配此规则的队列,
    // 如果有,则把消息给它,如果有不止一个,则把消息分发给匹配的队列(每个队列都有消息!),
    // 显然在我们的测试中,参数2匹配了两个队列,因此消息将会被发放到这两个队列中,
    // 而监听这两个队列的监听器都将收到消息!那么如果把参数2改为topic.messages呢?
    // 显然只会匹配到一个队列,那么process2方法对应的监听器收到消息!
}
