【RabbitMQ】springboot用例(十)

Topic模式

生产者
@Configuration
public class RabbitMqTopicConfiguration {

    // 1、声明 Topic 交换机
    @Bean
    public TopicExchange topicExchange() {
        return new TopicExchange(Constants.TOPIC_EXCHANGE_NAME, true, false);
    }
    // 2、声明队列

    @Bean(Constants.QUEUE_TOPIC_QUEUE3)
    public Queue queue3() {
        return new Queue(Constants.QUEUE_TOPIC_QUEUE3);
    }

    @Bean(Constants.QUEUE_TOPIC_QUEUE4)
    public Queue queue4() {
        return new Queue(Constants.QUEUE_TOPIC_QUEUE4);
    }

    @Bean(Constants.QUEUE_TOPIC_QUEUE5)
    public Queue queue5() {
        return new Queue(Constants.QUEUE_TOPIC_QUEUE5);
    }

    // 3、绑定队列
    @Bean("queue3Binding")
    public Binding queue1Binding() {
        return BindingBuilder.bind(queue3()).to(topicExchange()).with("#.orange.*");
    }
    @Bean("queue4Binding")
    public Binding queue4Binding() {
        return BindingBuilder.bind(queue4()).to(topicExchange()).with("lazy.#");
    }
    @Bean("queue5Binding")
    public Binding queue5Binding() {
        return BindingBuilder.bind(queue5()).to(topicExchange()).with("*.*.rabbit");
    }
}
@Service
public class TopicSendMsgService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMsg(String msg, String routingKey) {
        rabbitTemplate.convertAndSend(Constants.TOPIC_EXCHANGE_NAME, routingKey, msg);
    }
}
消费
@Component
@RabbitListener(queues = Constants.QUEUE_TOPIC_QUEUE3)
public class TopicQueue3MsgListener {
    
    @RabbitHandler
    public void receiveQueue3Msg(String message) {
        try {
            System.out.println("receiveQueue3Msg ====>>> " + message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
posted @   二月无雨  阅读(30)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示