问题标签 [brokeredmessage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
839 浏览

c# - 由于 Microsoft.ServiceBus.Messaging.MessageState 类型不受支持,序列化操作失败

我有一个 C# 应用程序,它订阅 Azure 服务总线队列并使用BrokeredMessage. 此应用程序接收消息,执行其业务逻辑,最后当它尝试完成消息(msg.CompleteAsync()msgSender.SendAsync(msg.Clone()))时,即从队列中删除消息并将其移动到审核队列,然后我得到一个异常 -"Serialization operation failed due to unsupported type Microsoft.ServiceBus.Messaging.MessageState"

任何人都可以帮助如何覆盖它吗?

0 投票
1 回答
448 浏览

azure - 未从 azure 服务总线订阅中获取所有代理消息

我正在使用 Azure 服务总线订阅和主题来发送订单和获取订单。我们有一个 Windows 应用程序,它使用来自 azure 服务总线订阅的 web api 来拉订单。

假设如果用户登录并获得 5 个订单。如果用户从 Windows 应用程序注销,那么我们将解锁来自 azure 服务总线的消息。如果用户在 5 分钟或更短的时间内再次登录,那么我们不会从 azure 服务总线获得所有订单。它有时会像 3 或 4 一样来。

任何人都可以在这个问题上帮助我,为什么我没有再次收到所有 5 个订单。我正在使用 subscriptionclinet 的 ReceiveBatch 方法来拉取消息。

0 投票
0 回答
144 浏览

.net - 完成或放弃服务总线消息时出现间歇性错误

请求操作未在分配的超时时间 00:00:23.0285352 内完成。分配给此操作的时间可能是较长超时的一部分。TrackingId:24342fae-1f74-4eef-b8f6-3b05d8826835,时间戳:8/24/2016 6:00:12 PM

和这个

Microsoft.ServiceBus.Messaging.MessagingCommunicationException:与服务总线通信时出错。检查连接信息,然后重试。---> System.ServiceModel.CommunicationObjectFaultedException:内部服务器错误:服务器没有提供有意义的回复;这可能是由于会话过早关闭造成的。TrackingId:3896994a-fc09-4b95-9aa7-e82d81f5e596,时间戳:2016 年 8 月 24 日下午 4:37:30

什么会导致这样的错误?

0 投票
0 回答
305 浏览

c# - 无法将 lambda 表达式转换为类型“System.IAsyncResult”,因为它不是委托类型

有人可以帮我弄这个吗?我倾向于主要在 VB 中工作,所以这个 C# 编译错误是一个问题:

.FromAsync 函数调用内部出现红色下划线,编译错误为;“无法将 lambda 表达式转换为类型‘System.IAsyncResult’,因为它不是委托类型”。

0 投票
1 回答
775 浏览

c# - Azure 服务总线负载均衡不均衡

设置

我有一个分布式系统模型,其中有一个生产者(P)、一个消费者(C)和 1、2、3、... n 个工人(Wn)。所有这些组件都通过 Microsoft Azure 服务总线 (B) 进行通信。在总线内部,有一个主题(T)和一个队列(Q)。

(P) 以不同的速率将消息推送到 (T)。(Wn) 的 [它们的数量是 (P) 的消息速率的结果] 正在从那里获取这些消息,根据一些预定义的函数更改它们,然后将消息转发到 (Q ), (C) 从中提取并按计划进行处理。

目的

此模型的目的是研究此类系统的可伸缩性,并特别关注 Azure 服务总线。应用程序本身是用 C# 编写的,它们都在同一个系统中执行。

问题

关于 Azure 服务总线的功能,我有两个担忧:

  1. 有没有办法告诉(B)在平衡方面更宽松,或者让(W)更“渴望”参与?

消息分发似乎有一个预定的顺序,使得负载平衡不均匀(在(W)之间)。

比如说我有 3 个 (W) 或 (W3):如果 (P) 现在要向 (T) 发送 1.000 条消息,我希望分布均匀,接近所有消息的 1/3 (W) 中的每一个。然而事实并非如此;似乎 (W) 的其余部分只是坐在那里等待忙碌的 (W) 一个接一个地处理消息。突然,也许在 15 到 20 条消息之后,另一个(W)会收到一条消息,但仍然很不平衡。

因此,我现在 (W) 只是无所事事地坐着(在不同的时间段内)。

  1. 有没有办法在(B)的设置或(W)的代码中专门设置 PeekLock() 的时间?

我在 (W) OnMessage() 函数中尝试了 Thread.Sleep(timeToSleep)。如果不是因为第一个问题中表达的担忧,这似乎符合我的需求。

我的实验:每当一条消息到达 (W) 时,工作就开始了,就在 message.Complete() 被发送到 (B) 之前,我拉出一个 Thread.Sleep(2000) 或类似的东西。理想情况下,另一个(W)应该在第一个(W)睡着的地方接听,但他们没有。第一个 (W) 醒来并抓取另一条消息,因此循环继续,有时 15-20 次,直到另一个 (W) 最终抓取一条消息。

图片

如果你原谅我在通过绘图解释时的努力,这是当前的场景(图 1)和理想的、想要的场景(图 2):

图 1:当前情景

图 2:最佳/想要的场景

我希望对这个问题有所澄清。先感谢您!

0 投票
1 回答
2528 浏览

message-queue - 消息未从 Azure 服务总线订阅中删除

我正在使用 azure service bus 消息传递,因为我遇到了一些奇怪的问题。

我用“peeklock”模式创建了一个订阅客户端。使用 SubscriptionClient.ReceiveBatch(500) 方法并收到“n”条消息。然后循环这些消息并执行我的过程,如果我的过程成功完成,则使用 BrokeredMessage.Complete() 从队列中删除该消息。如果该过程中有任何问题,我正在使用 BrokeredMessage.Abandon() 来更新消息。但是消息不会从队列中删除。

经过一些分析,我怀疑我的过程需要更多时间,并且消息锁在过程完成之前就过期了。

然后我决定,在收到来自队列的消息后,我将这些消息推送到本地字符串数组中,然后调用 BrokeredMessage.Complete()。所以不存在锁过期的可能。但是仍然没有从队列中删除消息。

请给出一些想法来解决这个问题。

0 投票
3 回答
671 浏览

azure - Azure 服务总线主题:如何启用并发阅读器?

背景

我正在使用 Azure 服务总线。在命名空间内,我有一个具有活动订阅的主题。我有一个生产者将消息推送到该主题,并且我有 n 个订阅相同订阅的服务(出于可伸缩性原因)。这些服务使用 PeekLock() 来获取消息,对它们执行一些工作,然后在工作完成后通过 Complete() 释放消息锁。

问题

每当服务锁定消息时,似乎没有新服务能够从同一主题/订阅中获取消息。似乎整个主题都被锁定了,而不仅仅是消息本身被锁定。

实际的问题是我的服务只是坐在那里什么都不做,只是等待具有活动 PeekLock() 的服务完成。

问题

  1. 有没有办法在主题(和订阅)或队列中启用并发读取器(或并发锁)?

  2. 我在上面解释的(对我来说不想要的)场景 - 它是某种保证按接收顺序传递消息的结果吗?

代码片段:Csharp

0 投票
1 回答
2541 浏览

azure - Azure Service Bus BrokeredMessage GetBody 方法在读取通过 Rest API 发送的数据时抛出 SerializationException

我正在从基于 .NET 3.5 的 C# 解决方案向 Azure 服务总线队列发送 csv 文件。由于服务总线 nuget 包在 .NET 3.5 中不可用,因此我使用的是 Rest API。

队列正确接收文件。在接收端,我可以使用 .NET 4.5。因此,我尝试使用以下代码获取消息正文:

在这里,我按预期将 contentType 设置为 byte[] 。但是当我尝试获取 Body 时,出现以下错误:

我做错了什么,我该如何解决?

0 投票
3 回答
1690 浏览

azure-servicebus-queues - BrokeredMessage Azure ServiceBus 的虚假交付和接收

我创建了一个 BrokeredMessage 实例,并希望围绕它的传递计数与队列的最大传递计数来测试我的代码。我不想建立一个真正的队列来发送和接收消息,但是在传递消息之前,deliverycount 属性不会被初始化。我怎么能伪造这个?

0 投票
1 回答
613 浏览

c# - 同一台机器上的 Azure ServiceBus 多个侦听器不起作用

我正在使用 Azure ServiceBus 处理多个客户端发送的项目。

我正在测试接收这些消息并并排运行 2 个侦听器的部分。但是,如果我将 2 个项目提交到队列中。只有 1 个侦听器可以工作,而第二个侦听器没有接听其他项目。

但是,我尝试在不同的机器上运行 2 个侦听器,它们都处理推送到队列的 2 个项目。

在同一台机器上运行多个侦听器是否存在问题?如果是,我做错了什么以及如何解决?

谢谢你的时间。