第五章 多个消费者监听同一个队列

生产者:代码如上一章

消费者1:代码如前一章

消费者2:与消费者1代码完全相同

注意:此时,消费者1和2监听在同一个队列上,队列会以轮训的方式将10个消息分别交给消费者1和2进行处理。

但是这种情况下,如果消费者1处理的消息比较繁重,而消费者2处理的消息比较轻松地话,实际上应该让消费者2多处理一些消息,在消费者代码添加中如下代码:

        /**
         * basicQos(int prefetchCount)
         * prefetchCount:maximum number of messages that the server will deliver, 0 if unlimited
         */
     channel.basicQos(1);//阻止rabbitmq将消息平均分配到每一个消费者,会优先的发给不忙的消费者,如果当前的消费者在忙的话,就将消息分配给下一个消费者
时间: 2024-10-23 08:24:00

第五章 多个消费者监听同一个队列的相关文章

多个消费者监听同一个队列

生产者:代码如上一章 消费者1:代码如前一章 消费者2:与消费者1代码完全相同 注意:此时,消费者1和2监听在同一个队列上,队列会以轮训的方式将10个消息分别交给消费者1和2进行处理. 但是这种情况下,如果消费者1处理的消息比较繁重,而消费者2处理的消息比较轻松地话,实际上应该让消费者2多处理一些消息,在消费者代码添加中如下代码: /** * basicQos(int prefetchCount) * prefetchCount:maximum number of messages that t

网络:多个进程能否监听同一个端口号?

我们都知道socket是网络上两个进程之间的双向通信链路, 即 socket = <A进程的IP地址:端口号,B进程的IP地址:端口号> 那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么? 根据Unix网络编程中的知识可知,服务端监听一个端口会经历: 1.根据套接字类型(Ipv4,Ipv6等)创建套接字socket 2.将套接字bind绑定到具体的网络地址和端口号 3.调用listen开始在这个套接字上进行监听. Unix提供了一个接口setsockopt()可以在bin

linux系统实现多个进程监听同一个端口

通过 fork 创建子进程的方式可以实现,其他情况下不行. 当连接到来时,子进程.父进程都可以 accept, 这就是著名的"惊群"问题(thundering herd problem). 惊群现象 在该模型下(多个子进程同时共享监听套接字)即可实现服务器并发处理客户端的连接.这里要注意的是,计算机三次握手创建连接是在内核进程里完成的,不需要应用服务进程参数的,而服务进程仅仅要做的是调用accept将已建立的连接构建对应的连接套接字connfd(可参考 http://blog.csdn

多个UDP监听同一个端口

测试结果:客户端的数据总是发给最后一个打开的服务器 服务器代码:socket()->setsockopt()->bind()->recvfrom()/sendto() 1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <sys/types.h> 4 #include <arpa/inet.h> 5 #include <netinet/in.h> 6 #includ

第四章 基本TCP套接字编程 第五章 TCP客户/服务器程序实例

TCP客户与服务器进程之间发生的重大事件时间表 TCP服务器 socket() --- bind() --- listen() --- accept() --- read() --- write --- read() --- close TCP客户 socket() --- connect() --- write() --- read()  --- close() 套接字函数简介 int socket(int family, int type, int protocol); 指定要用的通信协议类

监听端口,获取webService请求报文

第一步下载我们的wsdl文件到本地 第二步建立一个测试webservice工程,把wsdl放在项目里面 第三步把测试webservice中的wsdlLocation改成localhost.....你的wsdl本地项目的地址. 第四步wsdl中的地址改成127.0.0.1 如果是域名则在host文件中配置 第五步创建java项目监听80端口 import java.io.BufferedReader;import java.io.IOException;import java.io.InputSt

js如何实现事件监听和解决兼容性

一.为什么需要事件监听? 我们可不可以为同一对象的同一事件绑定多个事件处理程序呢? 通过行内绑定和动态绑定是不可以的,但是可以通过事件监听来实现. window.onload = function() { // 动态绑定 document.getElementById('btn').onclick = function() { alert('first'); } // 动态绑定 document.getElementById('btn').onclick = function() { alert

erlang如何有效监听大量并发连接

看了erlang的一些开源网络框架RabbitMQ.Ranch,他们都使用多个进程同时accept一个socket.这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid). 所以问题来了,erlang多个进程同时监听一个socket安全吗? 这种方式在早期的erlang是不安全的,但R11B03 版本之后,erla

[Linux] 多进程网络编程监听一个端口

SO_REUSEPORT支持多个进程或者线程绑定到同一端口 每个进程可以自己创建socket.bind.listen.accept相同的地址和端口,各自是独立平等的.让多进程监听同一个端口,各个进程中accept socket fd不一样,有新连接建立时,内核只会唤醒一个进程来accept,并且保证唤醒的均衡性 <?php $context=stream_context_create(); stream_context_set_option($context, 'socket', 'so_reu