C# EasyNetQ/RabbitMQ客户端在IIS Web应用程序中未获得响应
我正在使用EasyNetQ/RabbitMQ将在IIS中运行的web应用程序连接到Windows服务。然而,我似乎没有得到工作的请求/响应。我很确定这不是一个代码问题,但我不知道下一步该去哪里 这是一个工作非常完美的测试控制台应用程序:C# EasyNetQ/RabbitMQ客户端在IIS Web应用程序中未获得响应,c#,asp.net,iis,rabbitmq,easynetq,C#,Asp.net,Iis,Rabbitmq,Easynetq,我正在使用EasyNetQ/RabbitMQ将在IIS中运行的web应用程序连接到Windows服务。然而,我似乎没有得到工作的请求/响应。我很确定这不是一个代码问题,但我不知道下一步该去哪里 这是一个工作非常完美的测试控制台应用程序: static void Main() { var stopHandle = new ManualResetEventSlim(); var producer = new Thread(() =>
static void Main()
{
var stopHandle = new ManualResetEventSlim();
var producer = new Thread(() =>
{
string cs = "host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1";
var bus = RabbitHutch.CreateBus(cs, x => x.Register<IEasyNetQLogger>(s => new EasyNetQ.Loggers.ConsoleLogger()));
while (!stopHandle.IsSet)
{
try
{
var result = bus.Request<AutomationRequest, AutomationResponse>(new AutomationRequest
{
taskId = "140061381555",
arguments = "type=pdf",
issueId = 97630548355,
});
Console.WriteLine("Result: " + result.status + ", " + result.status + ", " + result.downloadUrl);
}
catch (Exception)
{
Console.WriteLine("Failed");
}
if (!stopHandle.IsSet) Thread.Sleep(1000);
}
bus.Dispose();
});
producer.Start();
Console.ReadLine();
stopHandle.Set();
producer.Join();
}
}
static void Main()
{
var stopHandle=新的ManualResetEventSlim();
var producer=新线程(()=>
{
string cs=“host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1”;
var bus=RabbitHutch.CreateBus(cs,x=>x.Register(s=>neweasynetq.Loggers.ConsoleLogger());
而(!stopHandle.IsSet)
{
尝试
{
var结果=总线请求(新自动请求
{
taskId=“140061381555”,
arguments=“type=pdf”,
issueId=97630548355,
});
控制台.WriteLine(“结果:+Result.status+”、“+Result.status+”、“+Result.downloadUrl”);
}
捕获(例外)
{
控制台写入线(“失败”);
}
如果(!stopHandle.IsSet)线程睡眠(1000);
}
bus.Dispose();
});
producer.Start();
Console.ReadLine();
stopHandle.Set();
producer.Join();
}
}
另一方面,这是相同的测试代码,但作为web应用程序:
namespace WebApplication2
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
string cs = "host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1";
IBus bus = RabbitHutch.CreateBus(cs, x => x.Register<IEasyNetQLogger>(s => new EasyNetQ.Loggers.ConsoleLogger()));
try
{
var result = bus.Request<AutomationRequest, AutomationResponse>(new AutomationRequest
{
taskId = "140061381555",
arguments = "type=pdf",
issueId = 97630548355,
});
Console.WriteLine("Result: " + result.status + ", " + result.status + ", " + result.downloadUrl);
}
catch (Exception)
{
Console.WriteLine("Failed");
}
bus.Dispose();
}
}
}
命名空间WebApplication2
{
公共部分类\u默认值:第页
{
受保护的无效页面加载(对象发送方、事件参数e)
{
string cs=“host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1”;
IBus bus=RabbitHutch.CreateBus(cs,x=>x.Register(s=>neweasynetq.Loggers.ConsoleLogger());
尝试
{
var结果=总线请求(新自动请求
{
taskId=“140061381555”,
arguments=“type=pdf”,
issueId=97630548355,
});
控制台.WriteLine(“结果:+Result.status+”、“+Result.status+”、“+Result.downloadUrl”);
}
捕获(例外)
{
控制台写入线(“失败”);
}
bus.Dispose();
}
}
}
Web应用程序在队列中发送消息,消息在后端处理。后端为响应提供正确的correlationID并对其进行排队。然而,由于我不知道的原因,Web应用程序从未得到响应
Web应用程序最终会超时。但是,超时的长度并不是问题所在,因为将响应放入队列只需要大约两秒钟,而将两侧的超时更改为两分钟并没有任何区别
有人有现成的解决方案来解决什么问题吗?或者有什么想法去哪里找?我在谷歌上搜索了所有我能找到的关于EasyNetQ或RabbitMQ的信息,但我甚至没有发现任何人报告过类似的问题
--karri我也有类似的问题。你找到解决办法了吗?我也有类似的问题。你找到解决办法了吗?