1.方法一:使用Bean
未声明前RabbitMq客户端情况
相关java代码:
1.1声明队列、交换机以及绑定
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MqConfig {
// 交换机名称
public static final String EXCHANGE_NAME = "hello.direct";
// 队列名称
public static final String QUEUE_NAME = "hello.queue";
// 传递key
public static final String KEY = "hello";
@Bean
public DirectExchange directExchange(){
// return new DirectExchange(EXCHANGE_NAME); // 直接new一个交换机对象
return ExchangeBuilder.directExchange(EXCHANGE_NAME).build(); //通过ExchangeBuilder创建
}
@Bean
public Queue helloQueue(){
// return new Queue(QUEUE_NAME);
return QueueBuilder.durable(QUEUE_NAME).build();
}
@Bean
public Binding directBinding(){
return BindingBuilder.bind(helloQueue()).to(directExchange()).with(KEY);
}
}
1.2 监听代码
import com.example.rabbitmq.config.MqConfig;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MqListener {
@RabbitListener(queues = MqConfig.QUEUE_NAME)
public void listenHello(Long id){
System.out.println(id);
}
}
声明后RabbitMq客户端情况
2:RabbitListener注解方法
直接写监听代码
import com.example.rabbitmq.config.MqConfig;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MqListener {
@RabbitListener(queues = MqConfig.QUEUE_NAME)
public void listenHello(Long id){
System.out.println(id);
}
/**
* @QueueBinding绑定
* value 队列
* exchange 交换机
* key 传递key
* */
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "world.queue"),
exchange = @Exchange(name = "world.direct", type = ExchangeTypes.DIRECT),
key = {"world"}
))
public void listenWorld(Long id){
System.out.println(id);
}
}
RabbitMq客户端情况