java - 在多个线程中使用 RabbitMQ 发布者
问题描述
我想创建一个可以从不同线程调用的 RabbitMQ 发布者。
基于 RabbitMQ 最佳实践,我不应该允许在不同线程中使用相同的通道,因此在发布者的多个实例中共享此通道会导致问题。
我能想到的唯一解决方案是拥有一个带有内部队列的管理器线程,该线程实现了一个内部生产者-消费者,其中一个消费者仅存在于该线程中。
有没有更简单的方法?出于显而易见的原因,希望尽可能避免同步,此解决方案不允许这样做。
解决方案
您建议的解决方案是可以的。您还可以查看 Spring AMQP。它提供了一个线程安全的RabbitTemplate
,在后台使用通道池。
推荐阅读
- android - 请像我 5 岁一样解释:Flutter 中 MainAxisSize 的目的是什么?
- datatables - 有没有办法根据类型隐藏 DataTables 列?
- javascript - 如何在选择下拉列表中显示单个和多个复选框,在下拉选择中将值解析为复选框
- java - 回文数
- reactjs - Ponyfill Isomorphic-unfetch AbortController
- angular - 当 HttpStatus 为 202 时使用拦截器重定向和取消请求
- ms-access - 访问:从查询的基础表中显示表单字段
- typescript - TypeORM:使用 QueryBuilder 选择具有嵌套关系的 RANDOM()
- android - Kotlin:如何对数组 N x 2 或 2 连接数组进行排序?
- ios - 使用正则表达式解决方法的 Firebase Cloud Firestore 查询