在同一频道上消费和发布消息

     2023-02-26     292

关键词:

【中文标题】在同一频道上消费和发布消息【英文标题】:Consume and publish messages on the same channel 【发布时间】:2016-01-28 03:55:36 【问题描述】:

我正在使用 Java 在 RabbitMQ 中实现请求/回复模式。我知道通道不是线程安全的,所以每个消费者/线程使用 1 个通道。

我想知道在我的情况下,当使用单个通道来消费和发布消息,或者接收请求和返回响应时,是否存在任何问题或效率低下,如下面的代码,来自here:

channel.basicConsume(RPC_QUEUE_NAME, false, consumer);
channel.basicPublish("", props.getReplyTo(), replyProps, response.getBytes());

我应该使用两个不同的渠道来消费和发布消息吗?

【问题讨论】:

【参考方案1】:

根据 Rabbitmq java api 指南 - https://www.rabbitmq.com/api-guide.html

在一个线程中消费并在共享通道上的另一个线程中发布是安全的。

在通道和并发注意事项(线程安全)部分中提到。

【讨论】:

【参考方案2】:

您应该使用不同的连接来发布和消费,因为发布连接可能会被 RabbitMQ 限制。如果您的消费者处于同一连接中,他们也可能会被阻止。

https://www.rabbitmq.com/blog/2015/10/06/new-credit-flow-settings-on-rabbitmq-3-5-5/

【讨论】:

Python请求在同一频道再次发送消息

】Python请求在同一频道再次发送消息【英文标题】:PythonRequestSendMassageagaininsamechannel【发布时间】:2021-11-1710:52:36【问题描述】:如果CHANNEL_ID_1的状态响应码为200,有什么办法,那么它不应该在同一频道再次发送消息。USERS_TOKEN=... 查看详情

如何在 django 频道中从消费者类外部发送普通 JSON 消息

】如何在django频道中从消费者类外部发送普通JSON消息【英文标题】:HowtosendnormalJSONmessagefromoutsideofconsumerclassindjangochannels【发布时间】:2020-10-2915:58:18【问题描述】:我没有使用这个Django频道进行聊天,我通过网络套接字通过DRF... 查看详情

多个消费者监听同一个队列(代码片段)

...:与消费者1代码完全相同注意:此时,消费者1和2监听在同一个队列上,队列会以轮训的方式将10个消息分别交给消费者1和2进行处理。但是这种情况下,如果消费者1处理的消息比较繁重,而消费者2处理的消息比较轻松地话,实... 查看详情

向频道发布主动消息时如何在bot中设置“您和版主可以回复”?

】向频道发布主动消息时如何在bot中设置“您和版主可以回复”?【英文标题】:Howtoset`Youandmoderatorcanreply`inbotwhenpostingproactivemessagetochannels?【发布时间】:2021-09-0814:09:40【问题描述】:我目前正在开发一个向频道发布主动消息... 查看详情

kafka总结

...散列值,并将其映射到指定的分区上。这样可以保证包含同一个键的消息会被写到同一个分区上。生产者也可以使用自定义的分区器。读取消息。消费者订阅一个或多个主题,并按照消息生产的顺序读取它们。消费者通过检查消... 查看详情

springcloudstream的分区和分组

...们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副... 查看详情

RabbitMQ / AMQP:单个队列,同一消息的多个消费者?

】RabbitMQ/AMQP:单个队列,同一消息的多个消费者?【英文标题】:RabbitMQ/AMQP:singlequeue,multipleconsumersforsamemessage?【发布时间】:2012-05-2403:49:45【问题描述】:我刚开始使用RabbitMQ和AMQP。我有一个消息队列我有多个消费者,我想用... 查看详情

kafka——消费者原理解析

...完全变成了发布-订阅模型。一个消费者组中消费者订阅同一个Topic,每个消费者接受Topic的一部分分区的消息,从而实现对消费者的横向扩展,对消息进行分流。注意:当单个消费者无法跟上数据生成的速度,就可以增加更多的... 查看详情

rocketmq特性(features)

...指定的一个Topic,所有消息根据shardingkey进行区块分区。同一个分区内的消息按照严格的FIFO顺序进行发布和消费。Shardingkey是顺序消息中用来区分不同分区的关键字段,和普通消息的Key是完全不同的概念。适用场景:性能要求高... 查看详情

redis消息队列(代码片段)

...骤的操作,在执行完成后将已经完成的操作发送至指定的频道(channel)当中,并由其下层的应用监听该频道并继续下一步的操作,如果其处理完成后没有下 查看详情

分布式场景下kafka消息顺序性的思考(代码片段)

...一个消息B。由于T1>T0,并且进程A和进程B发送消息都是同一个hashpartition,消息理论上在partition内消息A是在消息B前被消费的。但假如进程A和进程B出于不同的机房等原因,导致在发送消息时进程A的消息由于网络原因,要比进程B... 查看详情

一文讲透rocketmq消费者是如何负载均衡的

...消费(Clustering)和广播消费(Broadcasting)。集群消费:同一Topic下的一条消息只会被同一消费组中的一个消费者消费。也就是说,消息被负载均衡到了同一个消费组的多个消费者实例上。广播消费:当使用广播消费模式时,每条... 查看详情

redis原理(代码片段)

...解耦),接收者也不需要持续尝试获取消息。1.2.1订阅频道首先,我们有很多的频道(channel),我们也可以把这个频道理解成queue。订阅者可以订阅一个或者多个频道。消息的发布者(生产者)可以给指定的频道发布消息。... 查看详情

redis原理(代码片段)

...解耦),接收者也不需要持续尝试获取消息。1.2.1订阅频道首先,我们有很多的频道(channel),我们也可以把这个频道理解成queue。订阅者可以订阅一个或者多个频道。消息的发布者(生产者)可以给指定的频道发布消息。... 查看详情

redis原理(代码片段)

...解耦),接收者也不需要持续尝试获取消息。1.2.1订阅频道首先,我们有很多的频道(channel),我们也可以把这个频道理解成queue。订阅者可以订阅一个或者多个频道。消息的发布者(生产者)可以给指定的频道发布消息。... 查看详情

Discord bot 在特定频道中发送消息

】Discordbot在特定频道中发送消息【英文标题】:Discordbotsendmsginspecificchannel【发布时间】:2021-01-0722:40:01【问题描述】:我知道以前有人问过这个问题,但我找不到适合我的解决方案。但我希望我的不和谐机器人(当我编写命令... 查看详情

聊一聊rabbitmq和kafka的应用场景

...法实现分片存储。kafka消息发送topic,topic可以多个分区,同一个topic的消息可以分片保存在不同的机器上,消息持久化存储在磁盘上,一个消息可以重复消费,不用像rabbitmq一样,有几个消费者来消费这个消息,就需要几个消息... 查看详情

消息中间件之kafka

...区+多消费者的方式,可以极大提高下游系统处理速度。同一消费者组中的消费者不会重复消费消息,不同的消费者组之间不会互相影响,都能收到全部消息。kafka就是通过消费组来实现P2P模式和广播模式的。Broker:Kafka服务器。T... 查看详情