标签: azureservicebus

Azure Service Bus中的竞争消费者消息传递模式

我刚刚开始使用Windows Azure Service Bus(主题和队列),并且正在尝试实现竞争消费者消息传递模式。

本质上,我希望有一组消息生产者和一组消息消费者。生成消息后,我希望第一个可用的使用者处理该消息。没有其他消费者可以收到此消息。

在Azure中有办法做到这一点吗?

azure azureservicebus

3
推荐指数
1
解决办法
1773
查看次数

在AWS上连接到Windows Server Service Bus

我正在使用新的Windows Server Service Bus 1.0 Beta开始一个新项目的工作.我正在尝试在AWS EC2虚拟机上设置测试环境.

我已在AWS EC2上运行的Windows Server 2008 R2实例上安装了Service Bus,并根据MSDN documentatoin中的示例设置了新的Farm,Container和Host.我在服务器上打开了所有正确的端口(4443和9354).我还按照[本页] [1]的说明将自生成的证书导出到我的客户端计算机上.

我有一个非常简单的C#程序,它创建一个队列,对消息进行排队并接收它.当我将可执行文件复制到VM并在那里运行时,这个程序工作正常,所以我相信我正在使用API​​.但是,当我从指向AWS服务器的本地开发框运行程序时,我得到了安全性异常.

我的代码看起来像这样:

var servername = "X.X.X.X"; // <-- An IP Address, not FQDN
var sbNamespace = "MyNamespace";
var httpPort = 4446;
var tcpPort = 9354;

//create SB uris
var rootAddressManagement = ServiceBusEnvironment.CreatePathBasedServiceUri("sb", sbNamespace, string.Format("{0}:{1}", servername, httpPort));
var rootAddressRuntime = ServiceBusEnvironment.CreatePathBasedServiceUri("sb", sbNamespace, string.Format("{0}:{1}", servername, tcpPort));

var tokenProvider = TokenProvider.CreateWindowsTokenProvider(new List<Uri>() { rootAddressManagement });
var namespaceManager = new NamespaceManager(rootAddressManagement, 
    new NamespaceManagerSettings()
    {
        TokenProvider = tokenProvider
    });
var …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 servicebus amazon-web-services azureservicebus

3
推荐指数
1
解决办法
5697
查看次数

Windows Azure:删除代理邮件时出错

我正在开发一个从Azure Service Bus队列中提取消息的Java应用程序.我正在使用Java Azure API(com.microsoft.windowsazure.services).我遇到的问题是,经过处理后删除代码消息有时会失败.

我的应用程序使用peek-lock接收模式,使用ServiceBusContract对象上的receiveQueueMessage()方法从队列中提取消息.一旦消息被成功处理,我通过调用deleteMessage()方法从队列中删除消息(我相信这个方法对应于.NET API中的Complete()方法).

但是,有时此方法调用失败.comMun.jersey.api.client.UniformInterfaceException异常由deleteMessage()记录到控制台,它不会抛出此异常(我将在下面生成输出).异常似乎告诉我无法找到该消息.发生这种情况时,消息将保留在队列中.实际上,下一次调用receiveQueueMessage()会再次检索此消息.然后删除失败一次或两次,然后成功.之后检索的消息成功删除.

以下是出现问题的代码:

ReceiveMessageOptions receiveOptions = ReceiveMessageOptions.DEFAULT; 
receiveOptions.setReceiveMode(ReceiveMode.PEEK_LOCK); 
BrokeredMessage message = serviceBus.receiveQueueMessage("my_queue",receiveOptions).getValue(); 
// Process the message 
System.out.println("Delete message with ID: "+message.getMessageId());
serviceBus.deleteMessage(message);
Run Code Online (Sandbox Code Playgroud)

以下是出现问题时输出的示例:

Delete message with ID: 100790000086491
2013/01/22 12:58:29 com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusExceptionProcessor processCatch
WARNING: com.sun.jersey.api.client.UniformInterfaceException: DELETE https://voyagernetzmessaging.servicebus.windows.net/sms_queue/messages/24/efa56a1c-95e8-4cd6-931a-972eac21563a returned a response status of 404 Not Found
com.sun.jersey.api.client.UniformInterfaceException: DELETE https://voyagernetzmessaging.servicebus.windows.net/sms_queue/messages/24/efa56a1c-95e8-4cd6-931a-972eac21563a returned a response status of 404 Not Found
    at com.sun.jersey.api.client.WebResource.voidHandle(WebResource.java:697)
    at com.sun.jersey.api.client.WebResource.delete(WebResource.java:261)
    at com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusRestProxy.deleteMessage(ServiceBusRestProxy.java:260)
    at com.microsoft.windowsazure.services.serviceBus.implementation.ServiceBusExceptionProcessor.deleteMessage(ServiceBusExceptionProcessor.java:176)
    at microworks.voyagernetzmessaging.smsservice.SmsSender$Runner.finalizeSms(SmsSender.java:114)
    at microworks.voyagernetzmessaging.smsservice.SmsSender$Runner.finalizeSms(SmsSender.java:119)
    at microworks.voyagernetzmessaging.smsservice.SmsSender$Runner.run(SmsSender.java:340)
com.microsoft.windowsazure.services.core.ServiceException: com.sun.jersey.api.client.UniformInterfaceException: DELETE …
Run Code Online (Sandbox Code Playgroud)

java azure azureservicebus azure-servicebus-queues

3
推荐指数
1
解决办法
1771
查看次数

如何从 Azure 总线服务检索所有主题?

我有一个包含 12 个主题的 Azure 服务总线。我正在制作一个可扩展的应用程序,如果主题数量减少或增加,应用程序应该connectionString用来获取该服务总线的所有主题名称。

如何从特定 Azure 服务总线获取所有主题名称?

请提供从特定 Azure 服务总线检索主题列表的代码示例。

c# azure azureservicebus

3
推荐指数
1
解决办法
1542
查看次数

ServiceBusTrigger WebJob的不同服务总线连接字符串

我有一个WebJob,它从事件主题中读取消息,处理它们,然后在不同的主题上创建消息.

我可以使用服务总线触发器轻松实现这一点.

public void EventSubscriptionToNotificationTopic(
        [ServiceBusTrigger(Subscribe.TopicName, Subscribe.SubscriptionName)] BrokeredMessage input,
        [ServiceBus(Publish.TopicName)] out BrokeredMessage output)
Run Code Online (Sandbox Code Playgroud)

为此,我们必须使用服务总线连接字符串,该字符串包含一个共享访问密钥,该密钥允许在可以访问这两个主题(root)的级别上发送和侦听权限.

我们希望能够使用不同的连接字符串/ SAS令牌锁定我们在这些主题上所需的权限(监听事件主题订阅和发送主题以发布到).

是否可以指定服务总线触发器或属性将使用哪个连接?

如果不是我必须自己滚动,可能只是使用服务总线触发器和WebJob连接字符串来读取消息,然后使用TopicClient在发布主题上创建新消息?

azure azureservicebus azure-webjobs azure-webjobssdk

3
推荐指数
1
解决办法
1544
查看次数

Azure Functions Service Bus Trigger:尝试绑定到自定义类时获取序列化异常

我正在创建一个带有Service Bus触发器的Azure功能,并尝试将传入的消息绑定到我的自定义类:

public class InputMessage
{
    public string EntityId { get; set; }
}

public static string Run(InputMessage message, TraceWriter log)
{
    log.Info($"C# ServiceBus trigger function processed message: {message}");
}
Run Code Online (Sandbox Code Playgroud)

我的消息是JSON,例如

{ "EntityId": "1234" }
Run Code Online (Sandbox Code Playgroud)

不幸的是,绑定在运行时失败,并显示以下消息:

执行函数时出现异常:Functions.ServiceBusTriggerCSharp1.Microsoft.Azure.WebJobs.Host:发生了一个或多个错误.异常绑定参数'message'.System.Runtime.Serialization:期望来自名称空间' http://schemas.datacontract.org/2004/07/ '的元素'Submission_x0023_0.InputMessage' .遇到名为'string'的'Element',名称空间' http:// schemas .microsoft.com/2003/10 /序列化/ '..

看起来运行时尝试使用反序列化消息DataContractSerializer.如何将反序列化切换为JSON?

c# azure azureservicebus azure-functions

3
推荐指数
1
解决办法
1315
查看次数

.net core azure servicebusqueue消息数量

我目前的工作,我在这里使用Microsoft.Azure.Servicebus 1.0版NuGet包基金的.Net核心项目: https://github.com/Azure/azure-service-bus

我遇到的问题是我找不到获取队列数量的活动消息的方法.使用ServicebusNamespace.NamespaceManager,使用.Net框架,引用队列并使用.ActiveMessageCount,这很容易

有没有人知道在这个带有.Net Core 1.1的库中是否可以通过其他方式实现这一点?

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

3
推荐指数
2
解决办法
658
查看次数

ServiceBusTrigger中的连接是什么?

我的Azure功能需要使用服务总线触发器(主题)定义的连接是什么?

运行看起来像这样

public static void Run([ServiceBusTrigger("testtopic", "testsubscription", AccessRights.Manage, Connection = "")]string mySbMsg, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)

它是ServiceBus的共享访问策略(端点:sb:// ...)下的策略的连接字符串吗?

c# azure azureservicebus azure-functions

3
推荐指数
1
解决办法
1024
查看次数

在使用Azure函数处理消息后,是否需要从服务总线队列中删除消息?

我是Azure的新手,我编写了一个Azure函数,当消息到达服务总线队列时会触发该函数。我需要手动删除此消息还是由服务总线处理?

azure azureservicebus azure-functions

3
推荐指数
1
解决办法
1295
查看次数

基于会话的服务总线与Azure功能

我在Azure上使用会话队列,当我在队列上推送一些数据时,我写了一个Azure函数来触发.

请注意,我已经创建了基于状态/会话的队列.

问题是当我将数据推送到队列时,我得到了错误

函数'xxx'的监听器无法启动.Microsoft.ServiceBus:需要会话的实体不可能创建非会话消息接收器

所以我的问题是我无法使用带会话的队列/主题功能吗?

azure azureservicebus azure-functions

3
推荐指数
2
解决办法
1301
查看次数