Rabbitmq无法监听后续消息
现象:
消息队列在处理完一条消息后,无法继续监听后续消息。
首先,系统启动时要启动接收方法如下:
protected void Application_Start()
{
RouteTable.Routes.MapHubs();
AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Register(GlobalConfiguration.Configuration);
//GlobalHost.ConnectionManager.GetHubContext<ProcessMonitoring>().Clients.All.receive("ss");
//RouteTable.Routes.MapHubs();
ReceiveSuccessMessage();
}
其次,接收方法如下,
/// <summary>
/// 反馈成功的消息队列
/// </summary>
public static void ReceiveSuccessMessage()
{
ConnectionFactory factory = CreateConnectionFactory();
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
//输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
channel.BasicQos(, , false);
var consumer = new EventingBasicConsumer(channel);
channel.BasicConsume(receiveQueueSuccess, false, consumer);
consumer.Received += (model, ea) =>
{
try
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body); //反馈信息处理
ProcessFeedbackInfoForQueue(message);
channel.BasicAck(ea.DeliveryTag, false);
}
catch (Exception ex)
{
Yingu.Common.SysLog.Write("接受消息队列失败:", string.Format("反馈成功消息队列 时间:{0} :失败原因{1}", DateTime.Now, ex.Message + ex.StackTrace));
channel.BasicAck(ea.DeliveryTag, false);
}
}; }; };
}
解决方法:
将第二个方法改为
/// <summary>
/// 反馈成功的消息队列
/// </summary>
public static void ReceiveSuccessMessage()
{
ConnectionFactory factory = CreateConnectionFactory();
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
//输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
channel.BasicQos(, , false);
var consumer = new EventingBasicConsumer(channel);
channel.BasicConsume(receiveQueueSuccess,false,consumer);
consumer.Received += (model, ea) =>
{
try
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body); //反馈信息处理
ProcessFeedbackInfoForQueue(message);
channel.BasicAck(ea.DeliveryTag, false);
}
catch (Exception ex)
{
Yingu.Common.SysLog.Write("接受消息队列失败:", string.Format("反馈成功消息队列 时间:{0} :失败原因{1}", DateTime.Now, ex.Message + ex.StackTrace));
channel.BasicAck(ea.DeliveryTag, false);
}
};
}
原因是每次处理一条消息后,接收方法会断开连接,无法继续监听后续消息。
Rabbitmq无法监听后续消息的更多相关文章
- mqtt实现自动监听服务器消息
本示例借助meteor的一个环境跑,和我们平时用的node自己搭的环境或java,php的环境本质一样,在此不多讨论. 首先需求是:多系统对接进行消息实时传递. 安装好mqtt: npm insta ...
- 【转】]监听SMS消息/编程实现短信拦截
当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent.注意,这个动作是一个字符串值,SDK 1.0不再包 ...
- Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
- select监听udp消息
服务端 #!/usr/bin/python2.6 # -*- coding:utf-8 -*- import json import socket import select def socketse ...
- RabbitMQ 将监听的IP从localhost修改为指定IP
# vim /etc/rabbitmq/rabbitmq.config 搜索 tcp_listeners 更改为:{tcp_listeners, [{"指定的IP", 5672}] ...
- spring-boot rabbitMq 完整项目搭建,包括创建、发送、监听
写在开始 rabbitMq 代码按照三部分介绍 第一部分 交换机和队列的创建 第二部分 消息发送 第三部分 消息监听 第一部分 1 建立queue 2 建立exchange 3 exchange绑定q ...
- Spring整合ActiveMQ及多个Queue消息监听的配置
消息队列(MQ)越来越火,在java开发的项目也属于比较常见的技术,MQ的相关使用也成java开发人员必备的技能.笔者公司采用的MQ是ActiveMQ,且消息都是用的点对点的模式.本文记录了实 ...
- Yii2.0 安装yii2-queue并在Linux启动守护进程监听消息
一.什么是yii2-queue? Yii2-queue是Yii2.0 PHP框架下一个消息队列拓展插件,支持基于DB, Redis, RabbitMQ, AMQP, Beanstalk 和 Gearm ...
- 使用jedis实现Redis消息队列(MQ)的发布(publish)和消息监听(subscribe)
前言: 本文基于jedis 2.9.0.jar.commons-pool2-2.4.2.jar以及json-20160810.jar 其中jedis连接池需要依赖commons-pool2包,json ...
随机推荐
- PAT (Advanced Level) 1028. List Sorting (25)
时间卡的比较死,用string会超时. #include<cstdio> #include<cstring> #include<cmath> #include< ...
- Spring的5种事物配置方式
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只 ...
- angularJS 系列(一)
angularJS 中 $scope 的原型 和 原型继承之间的细微差别是什么? 参考:http://stackoverflow.com/questions/14049480/what-are-the ...
- linux shell命令之 xargs
1 简介 xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题. 2 特点 (1) 处理文件/目录名中的空格 find ...
- Sping--IOC概念
1. 新建项目, 引入spring包(sping, common-annotation, common-logging包), 还有junit包. user.java: package com.bjsx ...
- stm32使用LWIP实现DHCP客户端
LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我 ...
- iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
苹果发布Xcode7后, 开放了普通的AppleID也能真机调试( 非$99 或 $299, 只要能上AppStore下载应用的AppleID就行),下面教你具体做法,很简单的. 1.运行Xcode, ...
- WebView点击图片看大图效果
在webViewDelegate里面添加如下代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - (voi ...
- centos 软件库安装
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo ...
- UVa 524 - Prime Ring Problem
题目大意:输入正整数n,把整数1,2...,n组成一个环,使得相邻两个整数之和均为素数.输出时从整数1开始逆时针(题目中说的不是很明白??)排列.同一个环应恰好输出一次. 枚举,并在枚举每一个数是进行 ...