在"如何使用Azure的服务总线与WebJobs SDK"天青文档本文介绍的使用[ServiceBusTrigger]属性,用于集成WebJob和Azure的服务总线主题的消息.但是,在Visual Studio 2015中使用默认的Azure WebJobs项目模板,对ServiceBusTrigger的引用会导致以下编译时异常:
找不到类型或命名空间名称'ServiceBusTriggger'(您是否缺少using指令或程序集引用?)
手头的问题是Nuget的Microsoft.Azure.WebJobs包不包含ServiceBusTriggerAttribute类.
是否有可以添加的Nuget包,其中包含这个非常需要的类?
我尝试过包含Nuget的WindowsAzure.ServiceBus包,但它也不包含它.
如果没有ServiceBusTriggerAttribute,我将无法连接此WebJob以使用来自Azure Service Bus主题的消息.任何帮助将不胜感激!谢谢!
我正在设置主题/订阅服务,需要帮助我的SQLFilter语法,以便我可以访问BrokeredMessage属性,特别是To属性.SQL筛选器访问邮件系统属性的正确语法是什么?
我有一个使用本教程的工作示例,我可以根据需要发送和接收我的主题/订阅:https://azure.microsoft.com/en-us/documentation/articles/service-bus-queues-topics-subscriptions/
但是,现在我想根据BrokeredMessage的To属性为每个订阅设置SQL过滤器.我所遵循的教程提到可以"创建订阅时,您可以提供对消息属性进行操作的过滤器表达式,包括系统属性(例如,Label)和自定义应用程序属性(例如,StoreName) .)"
如果我设置自定义属性,例如StoreName,如下所示:
message.Properties.Add("StoreName", "TestMe");
并使用SQL过滤器设置订阅,如下所示:
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("StoreName = 'TestMe'"));
订阅按预期过滤.但是,如果我尝试使用文章中描述的BrokeredMessage对象To属性(或标签),我一直无法使其工作.我尝试了以下SQL过滤器没有运气.访问消息的系统属性的正确语法是什么?
BrokeredMessage message = new BrokeredMessage();
message.To = "TestMe";
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("To = 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("Message.To= 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("MessageTo= 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("messageto= 'TestMe'"));我们使用Azure SDK将消息发布到Service Bus.在Web API调用中,我们为每个传入请求重复执行这些任务
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(conStr);
factory.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), 3);
var namespaceManager = NamespaceManager.CreateFromConnectionString(conStr);
TopicClient topicClient = factory.CreateTopicClient(topicName);
topicClient可以转换为Singleton并在多个线程中重用吗?
multithreading azure azureservicebus azure-servicebus-topics
我尝试使用 MassTransit 将消息发布到eventsAzure 服务总线中命名的主题。我在配置 MassTransit 以使用我预定义的主题时遇到问题events,而是为消息类型创建了一个由命名空间/类名命名的新主题。所以我想知道如何指定使用哪个主题而不是创建一个新主题。
这是我测试过的代码:
using System;
using System.Threading.Tasks;
using MassTransit;
using MassTransit.AzureServiceBusTransport;
using Microsoft.ServiceBus;
namespace PublisherNameSpace
{
    public class Publisher
    {
        public static async Task PublishMessage()
        {
            var topic = "events";
            var bus = Bus.Factory.CreateUsingAzureServiceBus(
                cfg =>
                {
                    var azureServiceBusHost = cfg.Host(new Uri("sb://<busname>.servicebus.windows.net"), host =>
                    {
                        host.OperationTimeout = TimeSpan.FromSeconds(5);
                        host.TokenProvider =
                            TokenProvider.CreateSharedAccessSignatureTokenProvider(
                                "RootManageSharedAccessKey",
                                "<key>"
                            );
                    });
                    cfg.ReceiveEndpoint(azureServiceBusHost, topic, e =>
                    {
                        e.Consumer<TestConsumer>();
                    });
                });
            await bus.Publish<TestConsumer>(new TestMessage { TestString = "testing" });
        } …我目前正在研究Azure 服务总线,但我不明白队列与具有单个订阅的主题相比的真正好处。我发现在这两种情况下都可以创建不同的应用程序来侦听单个队列(或订阅)以更快地处理消息。
那么,如果使用主题可以以同样的方式工作,那么使用天蓝色服务总线队列的真正便利是什么?更好的性能?这个更便宜?
azureservicebus azure-servicebus-queues azure-servicebus-topics
我陷入困境,需要一些建议或解决方案。
使用 ASP.NET Core 3.1 的 Web API
启动.cs
services.AddSingleton<ITopicClient>(s => new TopicClient({connectionstring},{topic}));
TopicRepository.cs
 public class TopicRepository : ITopicRepository
 {
        private readonly ITopicClient _topicClient1;
       private readonly ITopicClient _topicClient2;
        public TopicRepository (ITopicClient topicClient1, ITopicClient topicClient2)
        {         
            _topicClient1 = topicClient1;
            _topicClient2 = topicClient2;
        }
        public async Task<Response> SendToTopicAsync(string message, string topic)
        {
           if( topic == "topic1")
           await _topicClient1.send(message);
           else if (topic == "topic2")
           await _topicClient2.send(message);
        }
}
共享库中的 TopicClient.cs
        public TopicClient(string serviceBusConnectionString, string topicName)
        {
           _topicClient = new TopicClient(_serviceBusConnectionString,topicName);
        }
我需要向不同的主题发送消息。我想在startup.cs中注册具有不同主题名称的服务。我想重用 …
c# dependency-injection azure-servicebus-topics .net-core-3.1
Kafka 有流和表的概念。流代表事件的发生,而表代表状态。
Azure 资源上是否有对应的实体?查看事件中心、事件网格、Servicebus 队列和主题。似乎无法找到等价物?
我需要创建一个接收来自不同 Azure 服务总线主题的消息的体系结构。这些主题位于同一服务总线命名空间中。为此,我可以为每个主题创建一个订阅。如果需要,该架构应该能够开始接收来自更多主题的消息。该架构需要有自己的服务总线命名空间来使用队列或主题接收消息。
我不想为每个主题/订阅创建一个 Azure 函数,而是希望能够仅实现一个 Azure 函数来接收来自不同主题的所有消息。
举个例子:
我有一个服务总线命名空间“ ServiceBusNamespace1 ”
ServiceBusNamespace1包含以下主题和订阅:
我有另一个服务总线命名空间“ ServiceBusNamespace2 ”
ServiceBusNamespace2包含以下主题和订阅:
我需要 topic4 接收来自 topic1 和 topic2 的消息。
如果 topic4 在 ServiceBusNamespace1 中,我可以使用“自动转发”选项来执行此操作。但我需要 topic4 位于另一个服务总线命名空间中。
有什么方法可以实现这一点吗?
我尝试使用服务总线事件订阅,但无法使用事件网格的自定义架构。
正如 MSDN ( https://learn.microsoft.com/en-us/azure/service-bus-messaging/topic-filters )中所述,SQL 筛选器和相关筛选器都使用消息的系统定义属性和用户定义属性。
您能举个例子来说明两者之间的区别吗?
azure azureservicebus azure-servicebus-topics azure-servicebus-subscriptions