问题标签 [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 投票
1 回答
9069 浏览

azure - Azure 服务总线队列消息处理

所以我有一个 azure 函数充当调用内部托管 API 的队列触发器。

关于如何处理由于有毒以外的问题而无法处理的消息,网上似乎没有明确的答案。

一个例子:

收到我的消息并且该函数尝试调用 API。消息有效负载是正确的,并且可以处理,但是无论出于何种原因,API/服务都已关闭(此时间可能超过 10 分钟)。目前发生的情况是消息传递计数达到其最大值(10),然后被推送到死信队列,这反过来又发生在每条消息之后。

我需要一种方法来不增加交付计数或在达到最大值时将其重置。或者,我可以在不增加传递计数的情况下放弃对消息的 peek 锁定,因为我想停止处理队列中的任何消息,直到 API/服务重新启动并运行。这样,我将确保所有可以处理的消息都不会因为服务之间的连接问题而陷入死信。

关于如何实现这一目标的任何想法?

0 投票
1 回答
552 浏览

xml - 来自服务总线代理消息的未知 xml 序列化内容/命名空间

嗨,我想知道为什么当我从主题中获取消息时,我会在我的服务总线中的代理消息内容中获得一个特殊的命名空间。以及如何删除它?

我有我的 xml,当我(在我的 Azure 函数中)尝试从服务总线检索消息时,我得到了它的一切,或者在我的根节点之前更好地说:

当我在我的 azure 函数中从我的服务总线检索代理消息时,我会这样做:

仅供参考:在 Azure 函数中,xml 看起来不错,但是当我的逻辑应用程序获取它时,它以某种方式添加了前面/上面指定的上述命名空间。

有人遇到过这个吗?

0 投票
1 回答
202 浏览

c# - 路由到服务总线的 IotHub 消息丢失 ContentType 属性?

我正在尝试使用基于消息属性的消息路由来路由进入 IotHub 的设备消息。我将它们路由到服务总线主题。但是,我看到尽管设置了 ContentType 的属性

Microsoft.Azure.Devices.Client.Message

发送到 IoTHub 之前的类,在消息路由成功后出现的代理消息不会填充相同的属性。

我在这里缺少什么吗?

设备端代码:

接收端代码:

现在的问题是

msgFromDevice.ContentType

一片空白。

这方面有什么想法或指导吗?

谢谢!

0 投票
0 回答
33 浏览

c# - 反序列化派生类型导致“预期元素”错误

我正在尝试使用 Microsoft 的服务总线代理消息 API,但在尝试使用派生类型时遇到了反序列化问题。似乎代码无法识别已知类型,并且在序列化这些类型并在其他服务之间返回它们时我没有问题。有什么我想念的吗?我已经浏览了大量的 SO 帖子,但似乎没有任何效果。

这是消息结构:

到目前为止,我已经尝试过这些选项:

还:

0 投票
1 回答
1106 浏览

azure - 在向 Azure 主题发送消息之前重新创建主题客户端是否是一种好习惯

我正在使用 Microsoft.Azure.ServiceBus, Version=2.0.0.0 程序集连接到 Azure 主题。代码如下

我想知道每次需要向主题发送消息时创建主题客户端是否是一种好习惯,还是应该在应用程序启动时创建主题客户端并在每次需要发送消息时继续使用同一个客户端?

我需要考虑任何性能或可扩展性问题吗?

0 投票
1 回答
576 浏览

azure - Azure 服务总线队列 BrokeredMessage 在“RenewLock ()”上引发“SessionLockLostException”

我使用 Azure 服务总线队列来接收消息并开始一个长时间运行的活动,该活动可以持续几分钟到几个小时。在活动期间,一个单独的线程每 30 秒更新一次锁,直到活动完成。在 BrokeredMessage.RenewLock() 上,发生异常,下面的完整跟踪:“Microsoft.ServiceBus.Messaging.SessionLockLostException”(这是第一次发生)

这是更新锁的代码

队列的配置:

异常跟踪:

0 投票
0 回答
355 浏览

azureservicebus - 用于唯一客户端消息的 Azure 服务总线唯一会话以及如何建立非代理连接?

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

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

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

样品发件人

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

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

样品接收器

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

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

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

0 投票
0 回答
287 浏览

azureservicebus - 逻辑应用的天蓝色服务总线标准连接器是否与服务总线建立代理连接(或者它是非代理连接)?

在 Azure 服务总线队列(标准层)中,任何超过 1,000 的代理连接都需要额外收费。现在,我使用逻辑应用使用逻辑应用中开箱即用的服务总线(标准)连接器将消息发送到服务总线队列。此连接器将打开与服务总线的代理连接(在发送消息时)还是非代理连接?

如果它默认打开代理连接,我如何确保我的逻辑应用在向服务总线队列发送消息时打开与服务总线的非代理连接?

0 投票
2 回答
226 浏览

java - 使用 BrokeredMessage 消息在 Java 中使用 Azure 队列消息。getBody() 返回一些头信息,如何摆脱它?

我正在尝试从 Java 接收 Azure 队列消息。我能够在 java 中使用 BrokeredMessage 接收消息。(我是java新手)。

我的问题是 message.getBody() 也返回了一些标题信息(不仅仅是我需要的消息)。

而且我还注意到我分两批收到消息。(不是一次全部)

我的总消息大小小于 500B,但我已将字节大小设置为 4096。因此,由于大小问题,不是夹板。

这是我使用的接收器代码。

这是 System.out.print(s); 的总输出。(但正如我之前提到的,分两批)

任何帮助深表感谢!

0 投票
2 回答
317 浏览

azure - Azure 服务总线 - 将消息添加到处于延迟状态的队列

我想知道是否可以将代理消息发送到消息已经处于延迟状态的队列/主题?

我问这个是因为我目前有一个执行以下操作的过程......

  1. 该过程开始并将代理消息发送到队列(这会触发一个函数,该函数将消息主体作为一个实体记录在表存储中,并具有“处理”状态)。
  2. 在此过程中完成了额外的工作
  3. 如果我们在没有任何问题的情况下完成该过程,则会将另一条代理消息与完成消息一起发送到队列(这会触发将表存储中的实体更新为“完成”状态的相同功能)。

虽然这种方法主要是有效的,但它感觉笨重和脆弱。我真的希望能够向队列发送消息,然后在最后一步使消息在队列中可见,以便函数可以使用它(持久函数)。

我考虑过设置ScheduledEnqueueTimeUtc,但我不能保证该过程何时完成(我在这里考虑最坏的情况)所以我不确定设置它多长时间。

我还查看了Defera 的选项,BrokeredMessage但似乎只能从接收器设置,并且最初不能处于延迟状态。

我正在尝试对服务总线代理消息做些什么?我可以将预定的入队时间设置得这么长(例如 2 小时),如果达到那个时间,它会自动过期并移至死信队列吗?我是否应该将初始消息发送到死信队列,然后在该过程完成后检索它并重新提交?

有没有人有任何实现这样的过程的经验......发送一个开始消息并且只有在收到完成通知后才处理该消息?我需要它尽可能稳健,因为我在这个过程中处理金融交易。

希望我的解释是有道理的。