标签: azureservicebus

Azure 服务总线发布/订阅 - 接收与查看

Azure 服务总线主题上下文中的 Receive 和 Peek 有什么区别?

azure azureservicebus

2
推荐指数
1
解决办法
1846
查看次数

如何处理来自主题的死信消息

我有一个在 azure web 作业中处理的主题和订阅,但在一定数量的重试后,一些消息应该被移动到死信(队列或主题?)。我不知道处理死信消息需要什么。有人有代码示例吗?这对 azure web 工作有可能吗?

我几乎要放弃并使用重试计数器手动完成。目前,这就是我正在做的,但我真的不喜欢将消息添加回同一个队列的想法:


public void SynchronizeConsumer( 
    [ServiceBusTrigger("topic")] Consumer consumer, 
    [ServiceBus("topic")] ICollector withError) 
{ 
    try 
    { 
          this.consumerSync.SyncConsumer(consumer); 
    } 
    catch (Exception ex) 
    { 
          consumer.NbOfRetries++; consumersWithError.Add(consumer); 
    } 
}
Run Code Online (Sandbox Code Playgroud)

azure azureservicebus azure-webjobs azure-webjobssdk azure-servicebus-topics

2
推荐指数
1
解决办法
1330
查看次数

如何在 azure 服务总线中推送最大长度消息

我想将消息推送到 azure 服务总线,比如大小为 3 MB。为此,我写道:

QueueInfo queueInfo = new QueueInfo("sq-jcibe-microservice-plm-qa");
long maxSizeInMegabytes = 5120;
queueInfo.setMaxSizeInMegabytes(maxSizeInMegabytes); 
service.updateQueue(queueInfo);
service.sendQueueMessage("sq-jcibe-microservice-plm-qa", brokeredMessage);
Run Code Online (Sandbox Code Playgroud)

我收到以下异常。

com.microsoft.windowsazure.exception.ServiceException: com.sun.jersey.api.client.UniformInterfaceException: PUT https://sb-jcibe-microservice-qa.servicebus.windows.net/sq-jcibe-microservice-plm-qa?api-version=2013-07 returned a response status of 400 Bad Request
Response Body: <Error><Code>400</Code><Detail>SubCode=40000. For a Partitioned Queue, ordering is supported only if RequiresSession is set to true.&#xD;
Parameter name: SupportOrdering. TrackingId:59bb3ae1-95f9-45e1-8896-d0f6a9ac2be8_G3, SystemTracker:sb-jcibe-microservice-qa.servicebus.windows.net:sq-jcibe-microservice-plm-qa, Timestamp:11/30/2016 4:52:22 PM</Detail></Error> 
Run Code Online (Sandbox Code Playgroud)

我不明白这是什么意思,我应该如何解决这个问题。请帮我解决这个问题。?

jms servicebus azure azureservicebus

2
推荐指数
1
解决办法
964
查看次数

使用 Spring Boot 和 AMQP 订阅 Azure 服务总线主题

我设置了一个名为“state-changed”的 Azure 服务总线主题,并且它有一个名为“reverb”的订阅。我正在尝试设置一种方法来@JmsListener订阅该主题,但收到错误:

2017-03-22 18:34:41.049  WARN 23356 --- [enerContainer-6] o.s.j.l.DefaultMessageListenerContainer  : Setup of JMS message listener invoker failed for destination 'state-changed' - trying to recover. Cause: The messaging entity 'sb://[MySERVICEBUS].servicebus.windows.net/state-changed' could not be found. TrackingId:d2b442f79e0f44bdb449861ea57155ce_G44, SystemTracker:gateway6, Timestamp:3/22/2017 6:34:37 PM

javax.jms.JMSException: The messaging entity 'sb://[MySERVICEBUS].servicebus.windows.net/state-changed' could not be found. TrackingId:d2b442f79e0f44bdb449861ea57155ce_G44, SystemTracker:gateway6, Timestamp:3/22/2017 6:34:37 PM
    at org.apache.qpid.amqp_1_0.jms.impl.TopicSubscriberImpl.createClientReceiver(TopicSubscriberImpl.java:111) ~[qpid-amqp-1-0-client-jms-0.32.jar:0.32]
    at org.apache.qpid.amqp_1_0.jms.impl.MessageConsumerImpl.<init>(MessageConsumerImpl.java:129) ~[qpid-amqp-1-0-client-jms-0.32.jar:0.32]
    at org.apache.qpid.amqp_1_0.jms.impl.TopicSubscriberImpl.<init>(TopicSubscriberImpl.java:46) ~[qpid-amqp-1-0-client-jms-0.32.jar:0.32]
    at org.apache.qpid.amqp_1_0.jms.impl.SessionImpl.createDurableSubscriber(SessionImpl.java:544) ~[qpid-amqp-1-0-client-jms-0.32.jar:0.32]
    at org.apache.qpid.amqp_1_0.jms.impl.SessionImpl.createDurableSubscriber(SessionImpl.java:59) ~[qpid-amqp-1-0-client-jms-0.32.jar:0.32]
    at org.springframework.jms.listener.AbstractMessageListenerContainer.createConsumer(AbstractMessageListenerContainer.java:870) ~[spring-jms-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:215) ~[spring-jms-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1189) ~[spring-jms-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at …
Run Code Online (Sandbox Code Playgroud)

java spring azure azureservicebus

2
推荐指数
1
解决办法
4972
查看次数

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

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

public void SendMessage(Message brokeredMessage) 
{
    var topicClient = new TopicClient(_configuration.ConnectionString, topicName, _defaultRetryPolicy);
    await topicClient.SendAsync(brokeredMessage);
    await topicClient.CloseAsync();
}
Run Code Online (Sandbox Code Playgroud)

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

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

azure azureservicebus brokeredmessage

2
推荐指数
1
解决办法
1036
查看次数

在 Azure 服务总线上打开端口

Azure 服务总线上有哪些开放端口?

  • 8443(这是用于管理 API 吗?)
  • 17000
  • 17007
  • 18000
  • 18007
  • 19000
  • 19007

我可以找到有关其他端口(例如 9350-9354、5671、5672 等)的文档,但找不到上面列表中的文档。我需要记录这些以对项目进行渗透测试。

问候, 莫腾

更新:下面是服务总线端点的 NMap 扫描的屏幕截图

在此处输入图片说明

azureservicebus

2
推荐指数
1
解决办法
8512
查看次数

从 Azure 函数向 Azure 服务总线队列写入消息

我正在尝试从 azure 函数向 azure 消息队列添加消息。为此,我正在关注这篇文章,其中我添加了对 Microsoft.Azure.ServiceBus 的引用。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues

尝试添加此引用时,Visual Studio 2017 中的 Azure 函数项目会抱怨 Newtonsoft.Json (=9.0.1) 相对于 Microsoft.NET.Sdk.Functions 引用的受限版本。

检测到 Newtonsoft.Json 的版本冲突。将 Newtonsoft.Json 10.0.1 直接安装/引用到项目 IHA.Functions 以解决此问题。IHA.Functions -> Microsoft.Azure.ServiceBus 3.1.0 -> System.IdentityModel.Tokens.Jwt 5.2.2 -> Newtonsoft.Json (>= 10.0.1)
IHA.Functions -> Microsoft.NET.Sdk.Functions 1.0 .14 -> Newtonsoft.Json (= 9.0.1)。IHA.Functions C:\TFS\IHA\Misc\IHA.CSL\IH​​A.Functions\IHA.Functions.csproj 1

据我了解,Microsoft.Azure.ServiceBus 需要 Newtonsoft.Json 10.0.1。如果我删除9.0版本并添加10.0版本,我可以成功添加Microsoft.Azure.ServiceBus包,但是Azure Functions项目抱怨Microsoft.NET.Sdk.Functions需要9.0的Newtonsoft。

基于这些理解,我似乎无法从 Azure 函数写入 Azure 消息队列。这是正确的还是我做错了什么?

azureservicebus azure-functions

2
推荐指数
1
解决办法
5180
查看次数

缺少 .NET Core 2.0 和 Azure Web 作业 3.0 的 Azure 服务总线触发器配置

我正在做一个项目,我想在 Web 作业中实现 Service Buss 触发器。我已按照此处的说明进行操作:https : //docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-get-started

 public class Functions
    {
        public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
        {
            logger.LogInformation(message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我想使用 ServiceBus 的 Microsoft.Azure.WebJobs.ServiceBusTrigger 而不是存储队列 (QueueTrigger)。在文档中声明使用以下内容:https : //docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#service-bus-trigger-configuration-version-3x

static void Main()
{
    var builder = new HostBuilder();
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddServiceBus(sbOptions =>
        {
            sbOptions.MessageHandlerOptions.AutoComplete = true;
            sbOptions.MessageHandlerOptions.MaxConcurrentCalls = 16;
        });
    });
    var host = builder.Build();
    using (host)
    {

        host.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,问题是 b.AddServiceBus 甚至不可用(我有最新的 Web 作业版本)。因此,当我运行该项目时,出现“未找到工作职能”错误。任何想法或指示?

我确实尝试过:

 public static void ProcessQueueMessage([Microsoft.Azure.WebJobs.ServiceBusTrigger("queue")] string …
Run Code Online (Sandbox Code Playgroud)

azure azureservicebus azure-webjobssdk asp.net-core-2.0

2
推荐指数
1
解决办法
2026
查看次数

Azure servicebus 触发队列在本地调试中未命中代码

使用服务总线触发器创建 Azure 函数并部署在 azure 门户中。使用 servicebusexplorer,将队列发送到门户并正常工作。但是在azure中停止该功能后,将消息从资源管理器发送到visual studio中的本地代码进行调试。但它不会火。
我在 local.settings.json 中给出了服务连接字符串,队列名称是正确的。从 Visual Studio 运行该函数后,它会在 azure CLI 中抛出错误。

错误:

MessageReceiver 错误 (Action=Receive, ClientId=MessageReq.queue, Endpoint=sss-bbbb.servicebus.windows.net)xxxxx.queue, EntityPath=sss.ccccc
Microsoft.Azure.ServiceBus:连接尝试失败,因为连接方没有一段时间后正常响应,或建立连接失败,因为连接的主机未能响应 ErrorCode: TimedOut。System.Private.CoreLib:连接尝试失败,因为连接方在一段时间后没有正确响应,或者因为连接的主机没有响应而建立连接失败。

本地设置.json

   {    
        "IsEncrypted": false,    
      "Values":     
     {     
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",     
          "AzureWebJobsDashboard": "UseDevelopmentStorage=true",    
          "FUNCTIONS_WORKER_RUNTIME": "dotnet",     
          "ServiceBusConnectionString": "Endpoint=//",    
          "RequestTimeout": "600000"    
      }      
Run Code Online (Sandbox Code Playgroud)

azureservicebus azure-servicebus-queues azure-functions visual-studio-2017 service-bus-explorer

2
推荐指数
1
解决办法
1425
查看次数

Azure 服务总线队列接收器是否有超时限制?

我们正在接收来自 Azure 服务总线队列的消息。队列上的接收者(消息处理程序)调用应用程序服务,更新 SQL 数据库表中的百万条记录,处理时间超过 30 分钟。

Azure 服务总线队列是否有超时限制?这会导致 SQL 表进程停止更新行吗?

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues

正在发送的实际服务总线消息队列非常小,它只是一个YearProductType。然后app service方法会带上这两个参数,更新整个sql表。

Azure 服务总线队列方法 ---> 服务总线消息接收(事件处理程序)---> 调用应用服务更新 SQL 表

.net azure azureservicebus azure-servicebus-queues asp.net-core

2
推荐指数
1
解决办法
1008
查看次数