当前位置: 首页 > 知识库问答 >
问题:

服务总线1.1正在使用WindowsAzure创建队列。ServiceBusDLL

荀正谊
2023-03-14

我正在准备开发连接到Azure服务总线的应用程序。对于开发,我想使用服务总线1.1。

我已经安装了localyservicebus 1.1,当我连接包服务总线时,它可以正常工作。v1_1版本。1.0.5.

但由于我希望最终使用Azure,我更喜欢使用WindowsAzure服务总线包,据我所知,它与服务总线1.1兼容。

但是当我想执行

namespaceManager.QueueExists(queueName)

与WindowsAzure。ServiceBus ver 3.1.2包我收到:

”系统。“例外”。。。。远程服务器返回错误:(400)请求错误。不支持查询字符串中的api版本。将其从Uri中删除或使用“2012-032012-082013-042013-07”之一

添加代码api_version=2013-07到Uri没有帮助。

但是,正在将消息发送到本地SB1上存在的队列。1运行良好(使用WindowsAzure.ServiceBys 3.1.2)。因此,它只适用于使用NamespaceManager的连接。

有人知道为什么它不起作用吗?

我用于测试的代码:

var cs ="Endpoint=sb://mylocalmachine/ServiceBusDefaultNamespace/;StsEndpoint=https://mylocalmachine:9355/ServiceBusDefaultNamespace/;RuntimePort=9354;ManagementPort=9355";
var queueName = "AAA";
var namespaceManager = NamespaceManager.CreateFromConnectionString(cs);
var messagingFactory = MessagingFactory.CreateFromConnectionString(cs);
var ver = namespaceManager.GetVersionInfo();

if (namespaceManager.QueueExists(queueName))
{
    namespaceManager.DeleteQueue(queueName);
}

namespaceManager.CreateQueue(queueName);

QueueClient client = messagingFactory.CreateQueueClient(queueName);
client.Send(new BrokeredMessage("Hello! " + DateTime.Now));


client = messagingFactory.CreateQueueClient(queueName, ReceiveMode.ReceiveAndDelete);
BrokeredMessage message = client.Receive();
if (message != null)
{
    Console.WriteLine(message.GetBody<string>());
}
Console.ReadKey();

共有1个答案

龙德义
2023-03-14

据我所知WindowsAzure。ServiceBus软件包与本地Windows服务总线不兼容。我们坚持使用旧包装。

我相信这些库在大多数情况下都是源代码兼容的,所以当您迁移到使用Azure service bus而不是使用prem时,应该非常简单,只需交换包、更改身份验证机制和连接字符串以及重新编译和测试。

 类似资料:
  • 我在MassTransit和azure服务总线上开发了一个简单的发布/订阅示例作为消息代理。我不明白的是,每次启动解决方案时,MassTransit都会为每个连接到总线的服务实例创建一个队列: 我不知道这样做的目的是什么。在我停止服务后,队列将被释放。MassTransit文档没有对此给出解释。也许这里有人知道?

  • 我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?

  • 我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。

  • 我在同一命名空间中有2个Azure Service Bus队列。我使用ScheduledQueueTimeUTC将计划消息放置在其中一个队列(“计划队列”)中,并将要立即处理的消息放置在另一个队列(“现在队列”)中。 我想做的是设置“预定队列”的自动转发属性,以便在消息到达它们的“预定队列”时将消息转发到“现在队列”。队列转发会这样工作吗?还是队列自动转发会立即发送已排队和未排队的消息? 我在任何

  • 我已经创建了一个简单的窗口服务来使用来自Azure服务总线队列的消息。我使用TopShelch创建windows服务。下面的代码从这里剪切如下示例:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 高频。Run(); ServiceBusHe