1

我计划选择 Azure 服务总线队列标准层,因为我需要创建一个启用会话的队列,以便我的 1000 名用户可以启动会话(使用在按钮单击时生成的动态会话 guid)并在队列中接收消息会话 id 即消息仅供他们使用(一个客户端不会收到用于其他客户端的消息,但确保所有用户都可以与其他用户并行接收他们的消息):

  1. 启用单个会话的服务总线队列能否处理这种情况,其中每个用户使用会话过滤器(使用动态会话 guid)连接(单击按钮)到总线并接收针对该会话 id 的响应,以便用户只接收他/她的消息和每个用户可以并行接收他/她的消息,而其他用户也同时接收消息?

  2. 如何与启用会话的服务总线队列建立非代理连接,以免达到 1000 个代理连接限制?以下代码(发送者和接收者)是否建立非代理连接?

样品发件人

1.在下面的代码中,发送者在发送消息时是否建立了非代理连接?

2. 如果不是,启动非代理连接的正确代码是什么?

QueueClient responseClient = MessagingFactory.CreateFromConnectionString("Endpoint=sb://XXXXXX").CreateQueueClient("ResponseQueue");

BrokeredMessage response = new BrokeredMessage();
response.SessionId = "XYZ";
response.MessageId = "XYZ";

responseClient.Send(response);

样品接收器

1.在下面的代码中,接收者在接收消息时是否建立了非代理连接?

2. 如果不是,启动非代理连接的正确代码是什么?

3. 我应该将时间设置为 TimeSpan (0, 0, 0) 以使其成为非代理连接吗?

QueueClient responseClient = MessagingFactory.CreateFromConnectionString("Endpoint=sb://XXXXXX").CreateQueueClient("ResponseQueue");

MessageSession receiver = responseClient.AcceptMessageSession("XYZ");
BrokeredMessage receivedMessage = receiver.Receive(new TimeSpan(0, 0, 20));

if (receivedMessage != null)
{
                Console.WriteLine(receivedMessage.MessageId + " " + receivedMessage.SessionId);
                receivedMessage.Complete();
}
4

0 回答 0