SERVICE BUS LÀ GÌ

     
Azure Service Bus là platform sản phẩm đợi thứ hai của Micorosft (cái thứ một là Azure Queue Storage), cung cấp Relay và Brokered message.Về Relay message, chúng ta có thể tìm hiểu thêm ở link: https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-itMục đích của Azure Service Bus là cung cấp phương án hỗ trợ trao đổi tài liệu và thông tin giữa các ứng dụng cùng với nhau với không phụ thuộc vào căn nguyên mà những ứng dụng vẫn hoạt động.

Topic

Topic giống như như queue, cung ứng hàng ngóng 1 chiều. Biệt lập ở nơi 1 topic có thể có tương đối nhiều subscription (reiceivers) để rất có thể nhận message.

Tạo Azure Service Bus vào Azure Portal

Bạn vào Azure Portal -> Create a resource -> Create namespace (Service Bus)


Bạn đang xem: Service bus là gì

*

Sau khi chế tác Service Bus namespace, các bạn vào Settings => Shared access policies để lấy key access vào Azure Service Bus
*

Có 2 phương pháp để bạn chế tác topic với subscription. Một là bạn tạo trong Azure Portal. Nhị là các bạn tạo bởi code C#.Trên trang Service Bus namespace, chúng ta nhấp Overview => +Topic để chế tác 1 topic mới


Xem thêm: Từ Ghép Là Gì - Cách Phân Biệt Từ Ghép Từ Láy Nhanh

*

Sau lúc tạo chấm dứt Topic, chúng ta vào Entities => Topics, nhấp lựa chọn Topic vừa tạo
*
Nhấp vào +Subscription để tạo 1 subscription mới
*

*



Xem thêm: Cách Chặn Cuộc Gọi Trên Messenger Nhưng Vẫn Nhắn Tin Nhắn, Làm Sao Để Chặn Cuộc Gọi Messenger

Xử lý Topic vào Visual Studio

Bạn chế tác project Console Application (.NET Framework).Install package: Install-Package WindowsAzure.ServiceBus -Version 5.0.0Mở tệp tin App.config, thêm connection string Service Bus .servicebus.windows.net/;SharedAccessKeyName=;SharedAccessKey=Tạo 1 topic mớivar td = new TopicDescription(topicName) SupportOrdering = true, AutoDeleteOnIdle = TimeSpan.FromHours(8), DefaultMessageTimeToLive = new TimeSpan(0, 4, 0, 0);// Create a new Topic with custom settings.// Store ConnectionString in web.config or app.config & copy connection string// from service bus namespaceTopicDescription newTopicDescription = null;string connectionString = GetConnectionString();var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);if (! await namespaceManager.TopicExistsAsync(topicName)) newTopicDescription = await namespaceManager.CreateTopicAsync(td);//Or we"ll retrieve it if it already existsTopicDescription topicDescription = newTopicDescription ?? await namespaceManager.GetTopicAsync(td.Path);Trường hợp bạn muốn update topic sẽ tồn tại:private static async Task UpdateTopic(NamespaceManager namespaceManager, string topicPath) TopicDescription mô tả tìm kiếm = new TopicDescription(topicPath) SupportOrdering = true, AutoDeleteOnIdle = TimeSpan.FromHours(8), DefaultMessageTimeToLive = new TimeSpan(0, 4, 0, 0) ; await namespaceManager.UpdateTopicAsync(description);

Xóa topic:

await namespaceManager.DeleteTopicAsync(topicName);

Tạo subscription

private static void AddSubscription(string topic, string subscription) string connectionString = GetConnectionString(); var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString); if (!namespaceManager.SubscriptionExists(topic, subscription)) namespaceManager.CreateSubscription(topic, subscription);

Nhận message từ Subscription

private static void ReceiveMessage(string topicName, string subscription) var connectionString = GetConnectionString(); var factory = MessagingFactory.CreateFromConnectionString(connectionString); var subscriptionClient = factory.CreateSubscriptionClient(topicName, subscription); var messageFromSubscription = subscriptionClient.Receive(TimeSpan.FromSeconds(5)); while (messageFromSubscription != null) Console.WriteLine($" Receiving message from subscription..."); var message = messageFromSubscription.GetBody(); Console.WriteLine($"Message received: Id = messageFromSubscription.MessageId, body toàn thân = message, Created Date Time = messageFromSubscription.EnqueuedTimeUtc.ToLongTimeString()"); messageFromSubscription.Complete(); messageFromSubscription = subscriptionClient.Receive(TimeSpan.FromSeconds(5));
*