<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Service Bus</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/servicebus/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/servicebus/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 06 Feb 2019 21:43:27 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Emitting Empty Avro Files Now Optional on Azure Event Hubs Capture</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/emitting-empty-avro-files-now-optional-on-azure-event-hubs-capture</link>
      <pubDate>Tue, 05 Feb 2019 23:13:01 GMT</pubDate>
      <dc:creator><![CDATA[Xu Rui_92]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2445</guid>
      <description><![CDATA[Event Hubs Capture is a powerful tool that enables automatic delivery of streaming data to a storage...]]></description>
      <content:encoded><![CDATA[Event Hubs Capture is a powerful tool that enables automatic delivery of streaming data to a storage destination of your choice for long-term retention or micro-batch services. Today, Capture customers can configure the time and size window to control Capture frequency. If no event comes in during a given window, Capture still creates empty Avro files for storage.

We have launched a new user control feature where you can easily enable or disable capturing of empty Avro files. This new toggle grants users more control over the Capture functionality and can reduce storage overhead, creating more cost savings.

When a new Event Hub is created with the Capture functionality turned on, empty Avro files are emitted by default. You can disable Capturing empty Avro files on the Azure Portal or through PowerShell and CLI. Your selection will not impact your current billing.
<h3><span style="text-decoration: underline"><strong>Turn off Emitting Empty Avro Files on Capture through Azure Portal</strong></span></h3>
If you do not have an Event Hub, check out <a href="https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create">Event Hubs documentation</a> to create a new Event Hub.

If you already have an Event Hub, turn on Capture and select your Capture Provider. Check or uncheck the “<em>Do not empty emit empty files when no events occur during the Capture time window</em>” option according to your preference.

<a href="https://msdnshared.blob.core.windows.net/media/2019/01/Capture-Empty-Avro-Screenshot.png"><img width="2050" height="1428" class="alignnone size-full wp-image-2455" alt="" src="https://msdnshared.blob.core.windows.net/media/2019/01/Capture-Empty-Avro-Screenshot.png" /></a>
<h3><span style="float: none;background-color: #ffffff;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">Stay tuned on enabling this property using ARM template, CLI/Powershell (coming soon)!</span></h3>
&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Enforcing TLS 1.2 use with Azure Service Bus</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/enforcing-tls-1-2-use-with-azure-service-bus</link>
      <pubDate>Thu, 22 Nov 2018 00:06:31 GMT</pubDate>
      <dc:creator><![CDATA[Ashish Chhabria]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2395</guid>
      <description><![CDATA[Long-term commitment to supporting protocols and protocol versions is a key expectation customers...]]></description>
      <content:encoded><![CDATA[<span>Long-term commitment to supporting protocols and protocol versions is a </span><span>key expectation customers</span><span> have from commercial cloud services. Deployed solutions, and especially widely deployed client applications that are often operated outside the original developer’s control</span><span>, are expected to not become spontaneously broken and cut off from cloud services by protocols being retired.</span><span> </span>

<span>When it comes to long-term support, security protocols such as Transport Layer Security (TLS, colloquially also still referred to as SSL) are the toughest to manage, because information security professionals rightfully push to expediently upgrade to the latest versions at the earliest time – with information security policies reflecting this – while there are significant client deployments “out there” which </span><span>cannot be easily upgraded to that latest version, often also due to platform limitations. “Just change the code to the latest runtime and recompile” is often not a practical option for a variety of reasons.</span><span> </span>

<span><a href="https://azure.microsoft.com/en-us/services/service-bus/">Azure Service Bus</a> is one of the oldest services in Azure, with some of its existing protocol surface area in active use by customers dating back to even before commercial availability in 2010</span><span>, and there are quite a few applications that have been built and deployed years ago using TLS 1.0 and are considered by ISVs and/or their customers to “just work”, even if we here at Microsoft disagree from a security policy perspective. </span><span>TLS 1.0 is problematic, but for some customers or their clients not problematic enough to rush to retire all uses of it in older systems. That’s why we still offer TLS 1.0 and TLS 1.1 as an endpoint option.</span><span> </span>

<span>That all said:</span> <span>I</span><span>f application deployments under your control or watch are still relying on TLS 1.0 or TLS 1.1</span><span>, those are on borrowed time. The clock is ticking loudly and many customers who are known to have such dependencies have already received or will receive communication from Azure to that effect; the Azure platform will retire TLS 1.0 and TLS 1.1 as a matter of global policy all at the same time for services that still support it.</span><span> </span>

<span>Even </span><span>while</span><span> TLS 1.0 and TLS 1.1 </span><span>remain</span><span> an option on the Service Bus gateways, your own applications can ensure to </span><span>be in full compliance with current policies and always use TLS 1.2. The TLS protocol version and the TLS cipher suites are ultimately always a client choice to make, and the client can always refuse to communicate further if the offered capabilities are out</span><span>side</span><span> of its desired compliance framework.</span><span> </span><span> </span>
<h3><span>Enforcing use of TLS 1.2</span><span> with in-support clients</span><span> </span></h3>
<span>If your Service Bus clients are up to date, you are </span><span>generally </span><span>using TLS 1.2.</span><span> </span>

<span>If you are using </span><span>any version of the</span> <span>official </span><strong>.NET Standard client</strong> <span>(</span><i><span>Microsoft.Azure.ServiceBus</span></i><span> on </span><span>Nuget</span><span>)</span><span> or </span><span>version 3.4.3 or later of the</span><strong> .NET Framework client</strong><span> (</span><span>WindowsAzure.ServiceBus</span><span> on </span><span>Nuget</span><span>)</span> <i><span>and</span></i><span> you are using </span><span>the .NET Framework 4.</span><span>7.1</span><span> or newer</span><span>,</span> <span>your application </span><a href="https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls"><span>will </span><span>automatically </span><span>f</span><span>o</span><span>llow the .NET Fram</span><span>e</span><span>work guidance model </span><span>for TLS </span><span>and </span><span>always </span><span>follow</span></a><span> the </span><span>OS configuration settings </span><span>and respective</span><span> .NET Framework overrides</span><span>.</span> <span>Current versions of Windows default to using TLS 1.2</span><span>.</span><span> </span>

<span>For <strong>.NET Framework 4.6</strong></span><span>, you will have to enforce the use of TLS 1.2 in</span><span> the startup of your application by setting </span><span> </span>
<p style="text-align: left"><i><span>        <strong>ServicePointManager.SecurityProtocol</strong></span></i><strong><i> = SecurityProtocolType.Tls12</i></strong><span> </span></p>
<span>or by enforcing the use of HTTPS tunnelling (</span><span>see further below</span><span>).</span><span> </span>

<span>If you are using </span><span>the official <strong>Java</strong> client (</span><i><span>azure-servicebus</span></i><span> on Maven),</span> <span>the client will automatically follow </span><span>the Java platform rules for enforcing TLS 1.2</span><span>, where TLS 1.2 is the default.</span><span> </span>

<span>I</span><span>f you are using a </span><strong>custom AMQP 1.0 client</strong><span>, refer to the respective project documentation for how to enforce TLS 1.2 use. </span><span>The Microsoft </span><span>lower-level </span><span>AMQP libraries </span><span>for .NET (</span><i><span>Microsoft.</span></i><i><span>Azure.</span></i><i><span>Amqp</span></i><span> and </span><span>AmqpNet</span><span>Lite</span><span>) follow the .NET Framework guidance</span><span> and default to TLS 1.2. The </span><span>Apache </span><span>Qpid</span><span> Proton </span><span>AMQP </span><span>libraries generally default to TLS 1.2</span><span> today.</span><span> </span>
<h3><span>Enforcing use of TLS 1.2 with </span><span>out-of</span><span>-support clients</span><span> </span></h3>
<span>The only scenarios where </span><span>enforcing use of TLS 1.2 is </span><span>substantially </span><span>trickier </span><span>involve</span> <span>us</span><span>ing</span><span> out-of-date clients</span> <span>where it’s impossible </span><a href="https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls"><span>to </span><span>follow the .NET Framework guidance to upgrade to .NET 4.7.2</span></a><span>.</span><span> </span>

<span>If you are using </span><span>the <strong>.NET Framework client</strong> (</span><i><span>WindowsAzure.ServiceBus</span></i><span> on </span><span>Nuget</span><span>)</span><span> with </span><span>version </span><span>4.5</span><span>.x</span> <span>of the .NET Framework and you are using the AMQP transport, you </span><span>must use </span><span>version 3.4.3 </span><span>of that client </span><span>or later</span><span> to </span><span>enforce </span><span>the use </span><span>of </span><span>TLS 1.2.</span><span> </span>

<span>If you are instead using the (default) </span><span>NetMessaging</span><span> transport, which is based on WCF, </span><span>the .NET </span><span>Framework versions 4.5.x and earlier have TLS version 1.0 hardcoded</span><span> for the native WCF transport option</span><span>, but </span><span>for Service Bus </span><span>you can circumvent </span><span>this when you enforce HTTPS tunnelling, which follows the operating system default rules. </span><span> </span>

<span>If you</span><span> don’t have source code access or can’t change your deployment, and</span><span> the client does </span><i><span>not</span></i><span> explicitly override the </span><span>ServiceBusEnvironment.SystemConnectivity.Mode</span> <span>setting to </span><span>ConnectivityMode.Tcp</span><span>, you can </span><span>simply </span><span>enforce </span><span>HTTPS </span><span>tunnel </span><span>usage </span><span>by</span> <span>suppressing outbound connectivity on ports 9350-9354 </span><span>with a local firewall. </span><span> </span>

<span>You can enforce HTTPS usage by setting</span><span> </span>

<span><i>        </i><strong><em>ServiceBusEnvironment.SystemConnectivity.Mode</em></strong></span><strong><em>=ConnectivityMode.Https </em></strong>
<h3><span>Supported Cipher Suites</span><span> </span></h3>
<span>A key concern with older </span><span>implementations</span><span> of TLS is that they </span><span>prefer outdated cipher suites. </span><span>The Service Bus TLS configuration only offers the following options</span><span>, in order of service-side preference</span><span>. </span><span> </span>

<span>The </span><span>last three options are </span><span>only temporarily </span><span>retained for compatibility with some of the oldest clients.</span><span> </span>
<ul>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)</span><span>,</span><span> ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)</span><span>,</span><span> ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)</span><span>,</span><span> ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)</span><span>, </span><span>ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)</span><span>, </span><span>ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
</ul>
<ul>
 	<li><span>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)</span><span>, </span><span>ECDH x25519 (eq. 3072 bits RSA)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c)</span><span> </span></li>
</ul>
<ul>
 	<li><span>TLS_RSA_WITH_AES_256_CBC_SHA (0x35)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)</span><span> </span></li>
 	<li><span>TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)</span><span> </span></li>
</ul>
<span> </span>
<h3><span>Summary</span><span> </span></h3>
<span>Please verify that your applications are </span><span>configured to use TLS 1.2. If they do, and this is purely a client choice, your applications will </span><span>be in compliance with</span><span> all policies that require TLS 1.2. </span><span> </span>

<span>While TLS 1.0 and TLS 1.1 </span><span>is</span><span> still an endpoint option on Service Bus, you should consider </span><span>it urgent to move </span><span>existing applications </span><span>using out-of-support clients </span><span>to TLS 1.2</span><span>, because its foreseeable that these versions will be re</span><span>tired</span><span> from </span><span>use across </span><span>all</span><span> Azure cloud</span><span> service</span><span>s</span><span>. </span><span> </span>]]></content:encoded>
    </item>
    <item>
      <title>Deprecating Service Management support for Azure Service Bus, Relay and Event Hubs</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/deprecating-service-management-support-for-azure-service-bus-relay-and-event-hubs</link>
      <pubDate>Thu, 01 Nov 2018 05:36:50 GMT</pubDate>
      <dc:creator><![CDATA[Xu Rui_92]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2375</guid>
      <description><![CDATA[Resource Manager, our next-generation cloud infrastructure stack, is fully replacing the "classic"...]]></description>
      <content:encoded><![CDATA[<span><span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">Resource Manager, our next-generation cloud infrastructure stack, is fully replacing the "</span></span><span><span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">classic" Service Management model. As a result, Service Management REST APIs and support for Service Bus, Relay, and Event Hubs will be retired on November 1, 2019. As with all changes of this type, we’re providing 12 months’ notice so you have adequate time to modify your services that use these APIs. For identification, these APIs have <code>management.core.windows.net</code> in the URI. </span></span>

<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">To continue using Service Bus, Relay, and Event Hubs, please move to Resource Manager by October 31, 2019. We encourage all customers who are still using Service Management APIs to make the switch soon to take advantage of the additional benefits of Resource Manager, which include resource grouping, tags, a streamlined deployment and management process, and fine-grained access control using RBAC. <span>For more information on Azure Resource Manager vs Service Management, please see the<a href="https://blogs.technet.microsoft.com/meamcs/2016/12/22/difference-between-azure-service-manager-and-azure-resource-manager/"> TechNet Blog.</a></span></span>

<span><span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px">For more information on Service Management and ARM APIs for Azure Service Bus, Relay and Event Hubs, please see our <a href="https://docs.microsoft.com/en-us/rest/api/servicebus/">Azure Rest API documentation. </a></span></span>]]></content:encoded>
    </item>
    <item>
      <title>Mixing Standard and Premium Service Bus with VNet Service Endpoints</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/mixing-standard-and-premium-service-bus-with-vnet-service-endpoints</link>
      <pubDate>Tue, 03 Jul 2018 22:54:58 GMT</pubDate>
      <dc:creator><![CDATA[Dan Rosanova MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2355</guid>
      <description><![CDATA[We recently announced the preview of VNET Service Endpoints for Azure Service Bus. There is an...]]></description>
      <content:encoded><![CDATA[We recently announced the preview of <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-service-endpoints" rel="noopener" target="_blank">VNET Service Endpoints for Azure Service Bus</a>. There is an important caveat for this feature: once you enable a service endpoint for Service Bus you cannot mix Standard and Premium tiers on that VNet. Because Service Bus Standard does not support VNets the endpoint will be restricted to Premium namespaces only and the VNet will block traffic to the Standard namespace. As a result, for now, please do not enable VNet service endpoints in applications that mix Standard and Premium Service Bus namespaces. 

If you’re interested in mixing Premium and Standard Service Bus namespaces in the same VNet we’d like to hear from you. 
]]></content:encoded>
    </item>
    <item>
      <title>IP Filtering for Event Hubs and Service Bus</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/ip-filtering-for-event-hubs-and-service-bus</link>
      <pubDate>Wed, 27 Jun 2018 21:26:14 GMT</pubDate>
      <dc:creator><![CDATA[Justin Conway]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2305</guid>
      <description><![CDATA[The Azure Messaging team is happy to announce the public preview of IP Filtering for Service Bus...]]></description>
      <content:encoded><![CDATA[The Azure Messaging team is happy to announce the public preview of IP Filtering for Service Bus Premium and Event Hubs Standard and Dedicated price plans. This feature allows users to control which IPs are accessing their resources. Some characteristics of this feature:
<ul>
 	<li>Rules allow you to specify accept and reject actions on IP masks</li>
 	<li>The rules work with IPv4 addresses</li>
 	<li>Rules are applied to the namespace level</li>
 	<li>You can have multiple rules and they are applied in order</li>
 	<li>The first rule that matches the IP address determines the accept or reject action</li>
 	<li>Requests from IPs that are rejected receive an unauthorized response</li>
</ul>
Today this features is available in the <a href="https://portal.azure.com/">Azure portal</a> (screenshot below) at the Event Hubs or Service Bus namespace level or via an ARM template

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/IPfilter.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/IPfilter.jpg" alt="" class="aligncenter size-full wp-image-2315" width="1090" height="422" /></a>

Want tighter control of who is accessing your Event Hubs or Service Bus queues and topics? Give IP Filters a try today for your <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-ip-filtering">Service Bus</a> or <a href="https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-ip-filtering">Event Hubs</a> namespace!]]></content:encoded>
    </item>
    <item>
      <title>Azure Event Hubs and Service Bus Virtual Network Service Endpoints in preview</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/azure-event-hubs-and-service-bus-virtual-network-service-endpoints-in-preview</link>
      <pubDate>Wed, 27 Jun 2018 21:23:38 GMT</pubDate>
      <dc:creator><![CDATA[Justin Conway]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2265</guid>
      <description><![CDATA[This blog was co-authored by Anitha Adusumilli , Principal Program Manager, Azure Networking and...]]></description>
      <content:encoded><![CDATA[<i>This blog was co-authored by<span> </span></i><em>Anitha Adusumilli<span> </span></em><i>, Principal Program Manager, Azure Networking and Sumeet Mittal, Program Manager, Azure Networking.</i>

Azure Event Hubs, a highly reliable and easily scalable data streaming PaaS offering has been prolific this year with new features such as <a href="https://azure.microsoft.com/en-us/blog/azure-event-hubs-is-now-offering-support-for-availability-zones-in-preview/">Availability Zones</a> and a big investment into Open Source with enabling <a href="https://azure.microsoft.com/en-us/blog/azure-event-hubs-for-kafka-ecosystems-in-public-preview/">support for Apache Kafka</a>. Azure Service Bus, a feature rich cloud messaging PaaS offering that also just offered support for <a href="https://azure.microsoft.com/en-us/blog/azure-service-bus-is-now-offering-support-for-availability-zones-in-preview/">Availability Zones</a> has also been busy. Today, both services are announcing public preview of Virtual Network Service Endpoints.

This new feature adds to the security and control Azure customers have over their workload environments today. Now, traffic from your Virtual Network to your Premium Service Bus namespaces and Standard or Dedicated Azure Event Hubs namespaces can be kept secure from public Internet access and completely private on the Azure backbone network.

Azure Event Hubs and Service Bus are joining the growing list of <a href="https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-service-endpoints-overview">Azure services that have enabled Virtual Network Service Endpoints</a>.

<strong>Important info</strong>
<ul>
 	<li>Offered with Dedicated and Standard Event Hubs pricing plans as well as Premium Service Bus</li>
 	<li>The feature is offered for free aside from the usual Event Hubs and Service Bus costs</li>
 	<li>Available in all public Azure regions</li>
</ul>
<strong>Azure Portal</strong>

To enable this feature from the Azure portal you can visit the Virtual Networks blade, select or create the Virtual Network you want and then navigate to the Service endpoints section.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/ServiceEndpoints1.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/ServiceEndpoints1.png" alt="" class="aligncenter size-full wp-image-2275" width="1636" height="909" /></a>

Then enable the Microsoft.EventHub service endpoint or the Microsoft.ServiceBus endpoint.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/ServiceEndpoints2.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/ServiceEndpoints2.png" alt="" class="aligncenter size-full wp-image-2285" width="559" height="154" /></a>

You can also create new virtual networks and virtual network rules from the Event Hubs or Service Bus namespace overview blades.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/VNET1.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/VNET1.png" alt="" class="aligncenter size-full wp-image-2295" width="1395" height="646" /></a>

<strong>Azure Resource Manager </strong>

Also you can create Virtual Network rules using an ARM template. For example, the Service Bus template for creating Virtual Network rules looks like the following:

{
"$schema":"https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion":"1.0.0.0",
"parameters":{
"namespaceName":{
"type":"string",
"metadata":{
"description":"Name of the namespace"
}
},
"vnetRuleName":{
"type":"string",
"metadata":{
"description":"Name of the Virtual Network rule"
}
},
"virtualNetworkSubnetId":{
"type":"string",
"metadata":{
"description":"subnet Azure Resource Manager ID"
}
}
},
"resources": [
{
"apiVersion": "2018-01-01-preview",
"name": "[concat(parameters('namespaceName'), '/', parameters('vnetRuleName'))]",
"type":"Microsoft.ServiceBus/namespaces/VirtualNetworkRules",
"properties": {
"virtualNetworkSubnetId": "[parameters('virtualNetworkSubnetId')]"
}
}
]
}

<strong>Next Steps</strong>

For additional information take a look at our documentation for <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-service-endpoints">Service Bus service endpoints</a> and <a href="https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-service-endpoints">Event Hubs service endpoints</a>.

As a bonus, if you are interested in a feature that allows you to create private connections to your on-premises infrastructure check out <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-ip-filtering">Service Bus IP Filtering</a> or <a href="https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-ip-filtering">Event Hubs IP Filtering</a>.]]></content:encoded>
    </item>
    <item>
      <title>Azure Service Bus is now offering support for Availability Zones in preview</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/azure-service-bus-is-now-offering-support-for-availability-zones-in-preview</link>
      <pubDate>Fri, 22 Jun 2018 00:59:01 GMT</pubDate>
      <dc:creator><![CDATA[Justin Conway]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2235</guid>
      <description><![CDATA[Azure Availability Zones support for Service Bus Premium provides an industry-leading,...]]></description>
      <content:encoded><![CDATA[Azure Availability Zones support for Service Bus Premium provides an industry-leading, financially-backed SLA with fault-isolated locations within an Azure region, providing redundant power, cooling, and networking. This preview begins with Central US, East US 2, and France Central.

This feature adds even more resiliency and fault tolerance capabilities to organizations in Finance, Healthcare, Retail, or other verticals that handle sensitive mission-critical data and transactions that simply cannot be lost or significantly impacted when using cloud messaging services.

Also, support for Availability Zones (AZ) combined with <a target="_blank" href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-geo-dr" rel="noopener">disaster recovery features</a> offers high availability and fault tolerance that can withstand zone and regional outages.

Availability Zone support for Service Bus takes another step in the direction of keeping to our commitments in making sure customer cloud messaging between applications and services run as smoothly as possible.
<h2>What regions will this be offered in during preview?</h2>
<ul>
 	<li>Central US</li>
 	<li>East US 2</li>
 	<li>France Central</li>
</ul>
Support for additional regions will be offered soon. Learn more about <a target="_blank" href="https://docs.microsoft.com/en-us/azure/availability-zones/az-overview" rel="noopener">Availability Zones</a>.
<h2>How can you enable AZ on your Service Bus premium namespace?</h2>
You can enable Availability Zones on new namespaces only, we do not support migration of existing namespaces.

If using an ARM template to create a Service Bus Premium namespace it is as simple as specifying an AZ supported region and setting the <strong>zoneRedundant</strong> property to true in the template:

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/SB_AZ_Create.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/SB_AZ_Create.png" alt="" class="aligncenter size-full wp-image-2245" width="768" height="294" /></a>

You can also enable zone-redundancy by creating a new namespace in the portal as shown below. It’s important to note that you cannot disable zone redundancy after enabling it on your namespace.

<a href="https://msdnshared.blob.core.windows.net/media/2018/06/SB_AZ_Create_Portal.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/SB_AZ_Create_Portal.png" alt="" class="aligncenter size-full wp-image-2255" width="770" height="532" /></a>
<h3>Learn more about <a href="https://azure.microsoft.com/en-us/services/service-bus/">Azure Service Bus</a>.</h3>]]></content:encoded>
    </item>
    <item>
      <title>ACS Migration Guide</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/acs-migration-guide</link>
      <pubDate>Fri, 18 May 2018 01:22:00 GMT</pubDate>
      <dc:creator><![CDATA[Tyler Pollak - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2215</guid>
      <description><![CDATA[Previously Service Bus namespaces could contain Queues/Topics, Event Hubs, Relays, or Notification...]]></description>
      <content:encoded><![CDATA[<i><span style="color: #ff0000">Previously Service Bus namespaces could contain Queues/Topics, Event Hubs, Relays, or Notification Hubs. You may still be affected by the ACS deprecation if you are using an older namespace. For the scope of the below article, "Service Bus namespaces" includes older, mixed-entity namespaces.</span>
</i>

<strong><em><span style="text-align: left;color: #333333;line-height: 24px;text-indent: 0px;letter-spacing: normal;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-variant: normal;text-decoration: none;cursor: text;float: none;background-color: transparent">Access Control Service PowerShell has been released and is available </span><a href="https://www.powershellgallery.com/packages/Acs.Namespaces/1.0.2">here.</a><span style="text-align: left;color: #333333;line-height: 24px;text-indent: 0px;letter-spacing: normal;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-variant: normal;text-decoration: none;cursor: text;float: none;background-color: transparent"> This provides a direct replacement for the ACS functionality in the classic Azure portal.  Throughout this guide, ACS PowerShell examples have been added.</span></em></strong>

&nbsp;

Access Control Service (ACS) is being retired soon (see <a href="https://azure.microsoft.com/en-us/blog/7-month-retirement-notice-access-control-service/">blog post</a>). Customers who are using ACS authorized Service Bus namespaces will need to migrate to Shared Access Signature (SAS) authorization prior to November 7, 2018 to protect themselves from unnecessary downtime.

We recommend following the below steps to start your migration to SAS authorization, which will be the supported model going forward.
<h3><span style="text-decoration: underline">1. Identify your ACS-Authorized Namespaces</span></h3>
Check to see if you have an ACS buddy namespace provisioned. For a Service Bus namespace <strong><i>typollaktestACS</i></strong>, there will be<strong><i> typollaktestacs-sb</i></strong> ACS buddy namespace provisioned if you are using ACS authorization. You can run the below commands to see if an ACS namespace exists (or batch many together in one script):
<pre><i>PS C:\Users\typollak&gt; </i><i>nslookup typollaktestacs-sb.accesscontrol.windows.net</i><i>
....</i>
<i>Non-authoritative answer:</i><span style="color: #000000">
<i>Name:   aad-ac-prod-sn1-001.cloudapp.net</i>
<i>Address: 70.37.92.127</i>
<i>Aliases: typollaktestacs-sb.accesscontrol.windows.net</i></span>
<i>         prod-sn1-001.accesscontrol.windows.net
</i></pre>
<pre>PS C:\Users\typollak&gt; Connect-AcsAccount
Token authenticated successfully
PS C:\Users\typollak&gt; Get-AcsNamespace -SubscriptionID 27150243-299a-426c-ba0b-68dd10cbd7aa

Name ManagementUrl Region State
---- ------------- ------ -----
typollaktestACS-sb https://typollaktestacs-sb.accesscontrol.windows.net USSC Active</pre>
<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px">If the ACS namespace resolves or the Get-ACSNamespace cmdlet returns values, continue with the below steps. </span>

<span style="float: none;background-color: transparent;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 24px;text-align: left;text-decoration: none;text-indent: 0px"><strong>If nslookup fails with an error like 'Non-existent domain', or if no results are displayed via Get-ACSNamespace, you are not using ACS.</strong> </span>
<h3><span style="text-decoration: underline">2. Identify if You Are Using ACS in your Application</span><i>
</i></h3>
The presence of an ACS buddy namespace does not necessarily mean that ACS authorization is being used. Even if an ACS buddy namespace is present, SAS authorization can be used. The following are some of the ways to determine if your Service Bus solution is using ACS.
<ul>
 	<li>Check your solution code for the following strings
<ul>
 	<li>"SharedSecretIssuer"</li>
 	<li>"SharedSecretValue"</li>
 	<li>"owner"</li>
 	<li>"SharedSecretTokenProvider" class references</li>
</ul>
</li>
</ul>
&nbsp;
<ul>
 	<li>Use <a href="https://www.telerik.com/fiddler">Fiddler </a>with decryption turned on (or any other network capture tool) to check for traffic to ACS. <strong>Look for traffic to &lt;namespace&gt;-sb.accesscontrol.windows.net.</strong></li>
</ul>
&nbsp;
<ul>
 	<li>Go to the ACS portal (<a href="https://&lt;namespaceName&gt;-sb.accesscontrol.windows.net">https://&lt;namespace&gt;-sb.accesscontrol.windows.net</a>) and change your keys and see if your solutions fail with ACS errors.</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2018/05/ACSKeys.jpg"><img width="512" height="253" class="wp-image-2205 aligncenter" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/ACSKeys.jpg" /></a>
<ul>
 	<li>Typical ACS errors have a reference to an error of form 'ACSxxxx' where xxxx represents a specific error code number.</li>
</ul>
<h3><a href="https://msdnshared.blob.core.windows.net/media/2018/05/image128.png"><img width="498" height="244" class="wp-image-2145 aligncenter" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/image128.png" /></a></h3>
<ul>
 	<li>You can use the Disable/Enable-ACSNamespace PowerShell cmdlets to disable/enable your ACS namespace like you would have in the classic Azure portal.  This could cause downtime for your service, but is a quick way to see where you rely on ACS.  <em>Note: you must include the "-sb" extension.</em></li>
</ul>
<pre>PS C:\Users\typollak&gt; Disable-AcsNamespace -Name "typollaktestACS-sb"
Name Region
---- ------
typollaktestACS-sb USSC

PS C:\Users\typollak&gt; Enable-AcsNamespace -Name "typollaktestACS-sb"
Name ManagementUrl Region
---- ------------- ------
typollaktestACS-sb https://typollaktestacs-sb.accesscontrol.windows.net USSC</pre>
<h3><span style="text-decoration: underline">3. Migration Scenarios (from <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-migrate-acs-sas">here</a>)</span></h3>
&nbsp;

<strong>Unchanged Defaults</strong>

If you are using the ACS default settings, you can just replace the ACS connection string with the SAS connection string provided in the Azure portal (<a href="https://portal.azure.com/">https://portal.azure.com</a>).

Change your ACS connection string:
<pre>Endpoint=sb://&lt;namespace&gt;.servicebus.windows.net/;<mark>SharedSecretIssuer=owner;SharedSecretValue=[snip]</mark></pre>
To your SAS connection string:
<pre>Endpoint=sb://&lt;namespace&gt;.servicebus.windows.net/;<mark>SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=wG46rtpDCQRGRVnBsTx+eRbYQwkda0slQF1bHy1FBoA=</mark></pre>
&nbsp;

You can see your connection strings via PowerShell using the <a href="https://docs.microsoft.com/en-us/powershell/module/azurerm.servicebus/get-azurermservicebusauthorizationrule?view=azurermps-6.0.0">Get-AzureRmServiceBusAuthorizationRule</a> cmdlet:
<pre>PS C:\Users\typollak&gt; Get-AzureRmServiceBusAuthorizationRule -ResourceGroupName $ResourceGroup -Namespace "typollaktestacs"

Id : /subscriptions/27150243-299a-426c-ba0b-68dd10cbd7aa/resourceGroups/Default-ServiceBus-SouthCentralUS/providers/Microsoft.ServiceBus/namespaces/typollaktestacs/AuthorizationRules/RootManageSharedAccessKey
Type :
Name : RootManageSharedAccessKey
Location :
Tags :
Rights : {Listen, Manage, Send}

Id : /subscriptions/27150243-299a-426c-ba0b-68dd10cbd7aa/resourceGroups/Default-ServiceBus-SouthCentralUS/providers/Microsoft.ServiceBus/namespaces/typollaktestacs/AuthorizationRules/Rule2
Type :
Name : Rule2
Location :
Tags :
Rights : {Manage, Listen, Send}

Id : /subscriptions/27150243-299a-426c-ba0b-68dd10cbd7aa/resourceGroups/Default-ServiceBus-SouthCentralUS/providers/Microsoft.ServiceBus/namespaces/typollaktestacs/AuthorizationRules/Rule3
Type :
Name : Rule3
Location :
Tags :
Rights : {Manage, Listen, Send}</pre>
After choosing the key with the specific rights you want, get the key values using <a href="https://docs.microsoft.com/en-us/powershell/module/azurerm.servicebus/Get-AzureRmServiceBusKey?view=azurermps-6.0.0">Get-AzureRmServiceBusKey</a>:
<pre>PS C:\Users\typollak&gt; Get-AzureRmServiceBusKey -ResourceGroupName $ResourceGroup -Namespace "typollaktestacs" -Name "Rule2"
PrimaryConnectionString       : <mark>Endpoint=sb://typollaktestacs.servicebus.windows.net/;SharedAccessKeyName=Rule2;SharedAccessKey=WYw3Hwu7OTSgiIrbVK2v0V+GSIXJwsGlO0E8b/FegeI=</mark>
SecondaryConnectionString     : <mark>Endpoint=sb://typollaktestacs.servicebus.windows.net/;SharedAccessKeyName=Rule2;SharedAccessKey=YCV+s+JkGUp/5UfKg5lLC/zHl7sFLmXX86AGv01cUUY=</mark>
AliasPrimaryConnectionString   :
AliasSecondaryConnectionString :
PrimaryKey                     : <mark>WYw3Hwu7OTSgiIrbVK2v0V+GSIXJwsGlO0E8b/FegeI=</mark>
SecondaryKey                   : <mark>YCV+s+JkGUp/5UfKg5lLC/zHl7sFLmXX86AGv01cUUY=</mark>
KeyName                       : Rule2</pre>
&nbsp;

You should also replace all <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.sharedsecrettokenprovider">SharedSecretTokenProvider</a> references with a <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.sharedaccesssignaturetokenprovider">SharedAccessSignatureTokenProvider</a> object, and use the SAS policies/keys from the Azure portal instead of the ACS <b>owner</b> account:

From (ACS):
<pre>MessagingFactory mf = MessagingFactory.Create(runtimeUri, <mark>TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerSecret));</mark></pre>
Change to (SAS):
<pre>MessagingFactory mf = MessagingFactory.Create(runtimeUri, <mark>TokenProvider.CreateSharedAccessSignatureTokenProvider(keyName, key));</mark></pre>
<strong>Simple Rules</strong>

If the application uses custom service identities with simple rules, the migration is straightforward in the case where an ACS service identity was created to provide access control on a specific queue. This scenario is often the case in SaaS-style solutions where each queue is used as a bridge to a tenant site or branch office, and the service identity is created for that particular site. In this case, the respective service identity can be migrated to a Shared Access Signature rule, directly on the queue. The service identity name can become the SAS rule name and the service identity key can become the SAS rule key. The rights of the SAS rule are then configured equivalent to the respectively applicable ACS rule for the entity.

You can make this new and additional configuration of SAS in-place on any existing namespace that is federated with ACS, and the migration away from ACS is subsequently performed by using <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.sharedaccesssignaturetokenprovider">SharedAccessSignatureTokenProvider</a> instead of <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.sharedsecrettokenprovider">SharedSecretTokenProvider</a>. The namespace does not need to be unlinked from ACS.

You can assign SAS keys with Manage, Send, or Listen privileges via the Azure portal or the <a href="https://docs.microsoft.com/en-us/powershell/module/azurerm.servicebus/Set-AzureRmServiceBusAuthorizationRule?view=azurermps-6.0.0">Set-AzureRmServiceBusAuthorizationRule</a> cmdlet.

<a href="https://msdnshared.blob.core.windows.net/media/2018/05/AddSASKeys.png">
<img width="1117" height="305" class="wp-image-2155 aligncenter" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/AddSASKeys.png" /></a>

&nbsp;
<pre>PS C:\Users\typollak&gt; Set-AzureRmServiceBusAuthorizationRule -ResourceGroupName "Default-ServiceBus-SouthCentralUS" -Namespace "typollaktestacs" -Name "Rule11" -Rights "Listen"

Id       : /subscriptions/27150243-299a-426c-ba0b-68dd10cbd7aa/resourceGroups/Default-ServiceBus-SouthCentralUS/providers/Microsoft.ServiceBus/namespaces/typollaktestacs/AuthorizationRules/Rule11
Type     :
Name     : Rule11
Location :
Tags     :
Rights   : {Listen}</pre>
&nbsp;

<strong>Relay Specific Guidance</strong>

If you are using Relays, you might find something like below in your config file:
<pre><em>&lt;behavior name="sharedSecretClientCredentials"&gt;</em>
<em>  &lt;transportClientEndpointBehavior&gt;</em>
<em>      &lt;tokenProvider&gt;</em>
<em>           &lt;sharedSecret issuerName="ISSUER_NAME" issuerSecret="ISSUER_SECRET"/&gt;</em>
<em>      &lt;/tokenProvider&gt;</em><em>
  &lt;/transportClientEndpointBehavior&gt;</em>
<em>&lt;/behavior&gt;</em></pre>
Please change this to below, with the appropriate key name/value from your Shared Access Signature Policy in the portal.
<pre><em>&lt;sharedAccessSignature keyName="KEY_NAME" key="KEY_VALUE"/&gt;</em></pre>
&nbsp;

<strong>Please open a Service Bus support ticket <a href="https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/overview">here</a> for urgent needs and immediate support. Additional questions can be sent to <a href="ACS-SB@microsoft.com">ACS-SB@microsoft.com</a>.</strong>

&nbsp;
<h2><span style="text-decoration: underline"><strong>FAQ</strong></span></h2>
&nbsp;
<h4><strong>How do I map my ACS access rules to SAS?</strong></h4>
<ul>
 	<li>The general circumstances and solutions for this are outlined <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-migrate-acs-sas#migration-scenarios">here</a>.</li>
 	<li>One caveat is that at any level (namespace/entity), there is a limit of 12 SharedAccessAuthorization rules. If you need more, we recommend using <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-sas#generate-a-shared-access-signature-token">SAS Tokens</a> . We have a <a href="https://github.com/clemensv/service-bus-activedirectory-sas-function">sample on how</a> to create a Security Token Service (STS) to issue SAS Tokens to trusted applications. <strong>The sample is meant to serve only as a guideline, and can be easily modified for your scenarios.</strong></li>
</ul>
&nbsp;
<h4><strong>I don't use C#, what are my options?</strong></h4>
<ul>
 	<li>All of our libraries support SAS. Note the links below might reference old libraries. Any new libraries will support SAS.
<ul>
 	<li>PHP - <a href="https://social.technet.microsoft.com/wiki/contents/articles/28584.azure-service-bus-queue-and-php.aspx">https://social.technet.microsoft.com/wiki/contents/articles/28584.azure-service-bus-queue-and-php.aspx</a></li>
 	<li>Java - <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues</a></li>
 	<li>Node.js - <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-nodejs-how-to-use-queues">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-nodejs-how-to-use-queues</a></li>
 	<li>Python - <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-queues">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-queues</a></li>
 	<li>Ruby - <a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-ruby-how-to-use-queues#configure-your-application-to-use-service-bus">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-ruby-how-to-use-queues#configure-your-application-to-use-service-bus</a></li>
</ul>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Premium Messaging: High Performance Without Partitions</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/premium-messaging-high-performance-without-partitions</link>
      <pubDate>Wed, 16 May 2018 18:03:27 GMT</pubDate>
      <dc:creator><![CDATA[Justin Conway]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2195</guid>
      <description><![CDATA[When Premium Messaging became generally available almost two years ago, by default when creating...]]></description>
      <content:encoded><![CDATA[When Premium Messaging became generally available almost two years ago, by default when creating entities for your namespaces you got two partitions. This was a relatively new concept for some Service Bus customers that were used to one partition. Our reasoning at the time was to improve availability for a nascent service. Well the team has come a long way in two years to improve the performance and availability of Premium so much so that we no longer enable partitions by default, in fact we have disabled the ability to use partitions in new Premium instances. Partitions are no longer needed for availability and performance reasons for Premium Messaging, but don't worry if you continue to use existing partitioned entities with your Premium namespaces that is totally okay and won't change.

<strong>To summarize some important aspects of this:</strong>
<ul>
 	<li>Existing entities with partitions in Premium will not be changed, they will remain the same</li>
 	<li>New entities that are created with SDKs, CLI, PowerShell, ARM, Azure portal will be non-partitioned entities by default (without the ability to enable partitions)</li>
 	<li>There is no decrease in availability due to one partition, it will be just as good as partitioned entities</li>
 	<li>DO NOT set enable partition with ARM templates, by default Service Bus will not allow this</li>
 	<li>For Service Bus Standard Messaging customers we still encourage partitioning your entities</li>
</ul>
<strong>Additional Benefits</strong>
<ul>
 	<li>A big benefit is that you no longer have to set partition keys for features like sessions, transactions, send via, and duplicate detection</li>
 	<li>If you use SignalR with Service Bus as the backbone it will now work seamlessly with Premium Messaging as SignalR only supports non-partition entities</li>
</ul>
Happy Messaging!]]></content:encoded>
    </item>
    <item>
      <title>AMQP transaction support and Send Via are now generally available</title>
      <link>https://docs.microsoft.com/archive/blogs/servicebus/amqp-transaction-support-and-send-via-are-now-generally-available</link>
      <pubDate>Tue, 15 May 2018 21:06:08 GMT</pubDate>
      <dc:creator><![CDATA[Ch. Wolf]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/servicebus/?p=2185</guid>
      <description><![CDATA[For the longtime Service Bus users among our community have enjoyed message transactions with the...]]></description>
      <content:encoded><![CDATA[For the longtime Service Bus users among our community have enjoyed message transactions with the old client. As of today, transactions are fully supported in our new open source libraries (Java and .Net Standard) or any AMQP library that implements the AMQP 1.0 Standard.

If you know the SBMP transaction feature you don’t need to read much further but likely will want to right away see how this all works. Please find a code sample here:

<a href="https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/TransactionsAndSendVia">https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/TransactionsAndSendVia</a>

If you are new to the Transaction or the Send Via features, you may want to go through the official documentation.
<ul>
 	<li><span><a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-transactions">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-transactions</a></span></li>
 	<li><span><a href="https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide">https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide</a></span></li>
</ul>
The feature is available across all regions and in Standard as well as our Premium SKU. It is available for both the .Net Standard and Java client. A Java sample will be available on GitHub shortly.

Some key things to note:
<ul>
 	<li>Transactions cannot span more than one connection context, so your code needs to reflect that.</li>
 	<li>Receive is not part of the transaction. Only operations which do something with the message on the broker are part of the transaction. These are: Send, Complete, Dead letter, Defer. Receive itself already utilizes the Peek lock concept on the broker.</li>
 	<li>Send Via lets you cross entity boundaries within a transaction scope: A single transaction cannot theoretically span across entities. To support cross entity transaction, you can now send a message to a destination-queue via another queue. The transaction will be performed on the via-queue, and once successful, the message will be forwarded/transferred to its intended destination.</li>
</ul>
Enjoy this great new feature!]]></content:encoded>
    </item>
  </channel>
</rss>