我正在使用服务总线队列在 Web 角色和辅助角色之间进行通信。我的服务总线上有两个队列。我正在将来自 Web 角色的消息放入队列,并且辅助角色处理该消息并将另一条消息放回另一个队列,Web 角色检索并发送给客户端。Web 角色和工作角色线程都在持续运行
我想知道执行控制何时位于 QueueClient.Receive,它是等到收到消息还是队列上没有消息然后移动到下一行?因为在队列上没有消息的情况下,我在 QueueClient.Receive 放置了一个断点来检查接下来会发生什么,但是控件没有转到下一行它只是消失了,所以我认为它可能只是在等待。
但是在下面我的网络角色中,我通过服务总线队列向工作角色发送一条消息,并期待立即从工作角色再次响应但有时工作角色需要一些处理时间并且网络角色没有得到它并且网络角色线程进入睡眠状态。
我是 Windows azure 的初学者,所以对整个问题有点困惑。谁能帮帮我?
我的工人角色:
// Receive the message from Web Role
BrokeredMessage receivedBroadcastMessage = null;
receivedBroadcastMessage = WebRoleClient.Receive();
if (receivedBroadcastMessage != null)
{
// Process the message
receivedBroadcastMessage.Complete();
}
BrokeredMessage webRoleMessage = new BrokeredMessage(processedMessage);
WorkerRoleClient.Send(webRoleMessage);
我的网络角色:
// send the request to worker role
BrokeredMessage webRoleMessage = new BrokeredMessage(details);
WebRoleClient.Send(webRoleMessage);
// receive the queue from worker role
BrokeredMessage workerRoleMessage = null;
workerRoleMessage = WorkerRoleClient.Receive();
if (workerRoleMessage != null)
{
//process message
workerRoleMessage.Complete();
}
else
{
// sleep thread
}