Tag: azure servicebus queues

MessageReceiver.ReceiveBatch()未按预期工作

我试图使用MessageReceiver中的ReceiveBatch方法从ServiceBus批量接收消息: IEnumerable messages; var messagingfactory = MessagingFactory.CreateFromConnectionString(“ConnectionString”); var msgrcvr = messagingfactory.CreateMessageReceiver(“queueName”, ReceiveMode.ReceiveAndDelete); messages = msgrcvr.ReceiveBatch(20, timeoutInSecs); 我已经使用Service Bus Explorer检查了我的队列包含20条消息。 此代码仅在消息结构中返回一条消息。 我遗失了一些财产吗?

QueueClient.Receive()的异步方法?

我正在使用服务总线来连接Web角色和worker角色。 我的worker角色处于连续循环中,我正在接收Web角色使用QueueClient.Receive()方法发送的消息。 但是使用此方法,如果服务总线队列上没有消息,它将等待几秒钟来接收消息,而不是移动到下一行以进一步执行。 我希望有一些接收消息的异步方法? 或至少某种方式来设置这个等待时间? 我从QueueClient的msdn文档中找到了这个BeginReceive方法,我希望这将是我的问题的答案,但我不知道如何使用这种方法。 方法参数是异步回调和对象状态,我不知道它们是什么。 有任何想法吗? 更新:由于Sandrino的一个很好的解决方案,它的工作是异步的。 但异步现在给了我一些问题。 我的VS崩溃了。 不确定是什么问题。 以下是我正在使用的代码。 工人角色: public override void Run() { while (!IsStopped) { // Receive the message from Web Role to upload the broadcast to queue BroadcastClient.BeginReceive(OnWebRoleMessageReceived, null); // Receive the message from SignalR BroadcastHub SignalRClient.BeginReceive(OnSignalRMessageReceived, null); } } public void OnWebRoleMessageReceived(IAsyncResult iar) { BrokeredMessage receivedBroadcastMessage […]

如何通过端口80向Azure Service Bus发送消息?

据我所知,Azure Service总线使用端口9350,9353等来发送消息。 在我的组织中,由于防火墙策略,我们无法打开这些端口。 因此,每当我尝试将消息发送到Azure中的队列时,我都会收到错误消息 主机mycloudsevice.servicebus.windows.net不存在DNS条目“。 有没有办法通过端口80/443发送这些,因为它们总是打开的? 如果我能做任何示例或代码更改,请告诉我。

如何将Observable序列化到云端并返回

我需要将处理序列(如本问题中如何使用.net RX组织数据处理器序列 )拆分为Azure环境中的多个计算单元。 我们的想法是将Observable序列序列化为Azure队列(或Service Bus)并将其反序列化。 如果生产者或消费者失败,其他方应该能够继续生产/消费。 任何人都可以建议一个优雅的方式来做这个和使用什么(Azure队列或服务总线)? 有没有人使用TCP Observable提供程序 – http://rxx.codeplex.com/wikipage?title=TCP%20Qbservable%20Provider这样的问题是否对一方的失败安全?

Windows Azure MessageLockLostException

我遇到Azure消息总线队列问题。 我抛出了MessageLockLostException并且请求操作未在分配的超时00:01:10内完成。 分配给此操作的时间可能是较长超时的一部分 。 我已将队列设置为ReceiveMode.PeekLock 。 我也检查一下 if(message.LockedUntilUtc.Minute <= 1) message.RenewLock(); 为什么会发生这种情况,是什么导致锁定放弃? 我从你收到的地方读到的地方默认为5分钟。 这个过程通常需要更长的时间。 我想更新锁,但这不太顺利。

在azure worker角色中使用QueueClient.OnMessage

我有一个Azure辅助角色,负责检查4个服务总线队列。 目前,我只是循环方法来手动检查队列。 while(true) { //loop through my queues to check for messages } Azure SDK 2.0具有监听消息而不是轮询消息的能力。 但是我见过的每个例子都使用Console.ReadKey()的控制台应用程序。 有没有办法让工人角色坐下来等待消息呢? 我试过了: public override void Run() { _queueProcessors.ForEach(x => x.OnMessage(Process); } 其中_queueProcessors是QueueClients的列表,而Process是处理消息的私有方法。 但是,worker角色会注册它们然后重新启动。 所以任何人都知道如何让队列客户端坐下来等待消息?

当您尝试取消已排队的计划Azure服务总线消息时会发生什么?

我正在尝试为Azure服务总线队列或主题安排消息的最佳方法,同时保持选项打开以立即发送消息而不是预定消息。 我想确保如果我尝试在第一条消息的预定时间或之后发送替换消息,我可以保护自己不会创建重复消息。 如果我在消息已经入队后尝试使用CancelScheduledMessageAsync(对于QueueClient和TopicClient类)取消已调度的消息,会发生什么? 它会抛出exception吗?

服务总线 – 单例连接类?

我试图找出从Web-API使用Service Bus的最佳实践。 我已经读过,重新创建像QueueClient,SubscriptionClient等对象是错误的方法,所以我需要重用工厂和客户端。 Service Bus客户端对象(如Microsoft.ServiceBus.Messaging.QueueClient或Microsoft.ServiceBus.Messaging.MessageSender)是通过MessagingFactory对象创建的,该对象还提供连接的内部管理。 发送消息后,不应关闭消息传递工厂或队列,主题和订阅客户端,然后在发送下一条消息时重新创建它们。 关闭消息传递工厂将删除与Service Bus服务的连接,并在重新创建工厂时建立新连接。 建立连接是一项昂贵的操作,可以通过为多个操作重复使用相同的工厂和客户端对象来避免这种操作。 参考 我需要实现一个特殊的类来保存与Service Bus的连接,我正在考虑一个将保存特定操作的Singleton类(像EnqueueJobToArchiveQueue(Job job)这样的函数,构造函数将初始化QueueClient,MessageFactory等等)将由“特定操作function”使用。 我的问题是我需要关闭对象( QueueClient.Close() ),我什么时候需要关闭对象? 到目前为止,这是我的class级: public class ServiceBusHelper { private static readonly ServiceBusHelper instance = new ServiceBusHelper(); private static MessagingFactory msgFactory; private static NamespaceManager namespaceManager; private const string jobQueueName = “job”; private const string responseTopicName = “jobResult”; private const string archiveQueueName = “jobArchive”; […]