【发布时间】:2018-03-15 15:25:22
【问题描述】:
我正在尝试使用同一个会话实例发送多个并发请求,看起来会话一个接一个地发送它们,而不是并行发送它们。它在发送下一条消息之前等待回复。
using (var client = new SolaceClient())
{
for (int i = 0; i < 10; i++)
Task.Factory.StartNew((s) => SendRequest(TOPIC, $"Hello Solace! + {s}", s), i);
Console.ReadLine();
}
...
public void SendRequest(string topic, string content, object index)
{
using (IMessage message = ContextFactory.Instance.CreateMessage())
{
message.Destination = ContextFactory.Instance.CreateTopic(topic);
message.BinaryAttachment = Encoding.ASCII.GetBytes(content);
message.DeliveryMode = MessageDeliveryMode.Direct;
IMessage replyMessage = null;
Console.WriteLine($"Sending message....{index}");
ReturnCode returnCode = _session.SendRequest(message, out replyMessage, 4000);
if (returnCode == ReturnCode.SOLCLIENT_OK)
Console.WriteLine(Encoding.ASCII.GetString(replyMessage.BinaryAttachment));
else
Console.WriteLine("Request failed, return code: {0}", returnCode);
}
}
如果我将超时设置为 0(异步),那么它会按预期工作,但我需要在同一个线程中同步请求。
是否可以使用同一个会话同时发送请求?
【问题讨论】:
标签: c# multithreading solace