Speaking on Azure Event Grid at the Microsoft Tech Summit in Sydney

I’m really excited about the opportunity to speak at the Microsoft Tech Summit in Sydney this week! This free two-day event is a technical learning opportunity with a focus on Microsoft Azure and Microsoft 365. There are some great sessions lined up with mostly Microsoft speakers, and although my partner slot is only 15 minutes, I’m grateful for the opportunity to share my thoughts on Azure Event Grid with the community:

image

Unfortunately with such a short time frame, there won’t be the opportunity to share and demonstrate the scenario which I’ve blogged about here, but I hopefully will have time to do a very short demo of the blob storage integration. In my preparation, I’ve been able to whittle down the execution time to less than three minutes, which includes:

  • Showing a pre-created Azure blob storage account with a single empty container
  • Provisioning an Event Grid subscription to blob creation events from within this storage account
  • Targeting the subscription at a URL from Request Bin
  • Uploading a file to the blob container using Azure Storage Explorer
  • Observing the event message displayed in Request Bin
    Getting all this to work smoothly in a limited time will feel a bit like a Mister Maker “Make It in a Minute” challenge – but Event Grid makes it so easy to integrate with Azure services that I’m pretty confident in being able to pull it off.
    Right now, the preview version only accepts a limited number of publishers and subscribers from Azure, but these options will expand over the coming months:

image

    And with support for custom topics and WebHook subscriptions, Event Grid is capable of handling events from anywhere today that can publish a properly formatted message to a URL and provide the necessary SAS token!
    If you’re going to be in Sydney at the event, please be sure to drop by the Amplify 1 stage at 9:15am on Thursday and check out my presentation! You won’t be disappointed. And don’t be shy about coming up to say “Hi” – I’ll be around for the rest of the two days, including the MVP  “Meet the Expert” sessions.

Serverless Logging & Alerting with Service Fabric & Azure Event Grid

(This post was originally published on Mexia’s blog on 1st September 2017)

Microsoft recently released the public preview of Azure Event Grid – a hyper-scalable serverless platform for routing events with intelligent filtering. No more polling for events – Event Grid is a reactive programming platform for pushing events out to interested subscribers. This is an extremely significant innovation, for as veteran MVP Steef-Jan Wiggers points out in his blog post, it completes the existing serverless messaging capability in Azure:

  • Azure Functions – Serverless compute
  • Logic Apps – Serverless connectivity and workflows
  • Service Bus – Serverless messaging
  • Event Grid – Serverless Events

And as Tord Glad Nordahl says in his post From chaos to control in Azure, “With dynamic scale and consistent performance Azure Event grid lets you focus on your app logic rather than the infrastructure around it."

The preview version not only comes with several supported publishers and subscribers out of the box, but also supports customer publishers and (via WebHooks) custom subscribers:

EventGridPubsSubs

In this blog post, I’ll describe the experience in building a sample logging mechanism for a service hosted in Azure Service Fabric. The solution not only logs all events to table storage, but also sends alert emails for any error events:

image

Read more of this post

The New Azure Hybrid Connections

(This post was originally published on Mexia’s blog on 19th June 2017)

Microsoft recently announced that Azure BizTalk Services (MABS) is officially being retired. This was no great surprise, as those who actually used this service and its VETER pipelines to build integrations were well aware that the tooling was cumbersome, the DevOps story was terrible, scalability was severely limited, and the management capabilities left much to be desired. Logic Apps and the Enterprise Integration Pack already have already far surpassed the capabilities of MABS for cloud-based integration and B2B (EDI) scenarios. However, the one really useful feature of MABS was the free Hybrid Connections capability – free because this feature never made it out of preview mode.

Image result for hybrid connection images

Hybrid Connections allowed you to easily connect your Web App or Mobile service to an on-premises resource without making any changes to your corporate network, traversing NATS, routers, firewalls etc. with a purely codeless solution. In fact, you could literally “lift & shift” your existing on-prem website to Azure and not even have to alter the connection string to your database. Moreover, it worked at the transport layer so there was no dependency on WCF or .NET. I was so intrigued by the capabilities of this service that I authored a Pluralsight course on it, as well as creating a webcast and writing several blog posts.

With the obvious signs over the past year or so that MABS was on its way out, this had us wondering what would happen to Hybrid Connections? Other non-network related technologies like Service Bus Relay and the newer On-Premises Data Gateway certainly offer some viable alternatives, but nothing that permitted the same flexibility as Hybrid Connections. Fortunately, late last year we got our answer – the new Azure Relay.

A New Offering

imageAzure Relay became generally available on 27 March 2017, less than five months after the preview was announced. This service actually is comprised of two capabilities: the WCF Relay (which is the new name of the existing Service Bus Relay), and the new version of Hybrid Connections. This version of the latter is everything that the former version was, but much more:

  • It is no longer hosted in a sunsetted technology (lives in Azure Service Bus)
  • A published API means that the capability is no longer confined to Azure Web Apps and Mobile Services
  • Reliance on web sockets means it is truly a cross-platform solution

In my Pluralsight course and in my previous webcast, I proved how easy it was to enable a single Azure hosted web site to talk to two separate on-premises resources (a web service and a SQL Server database). That capability exists in the new Hybrid Connections and can be set up in exactly the same way; a convenient downloadable manager agent can be installed in seconds which will complete the listener setup and allow you to flow messages into your network. I was easily able to recreate the same demo scenario in my webcast with the new version.

But even more compelling was the experience at using the API to build a more flexible solution, for example connecting an Azure hosted VM to an on-premises resource. Here, the supplied samples on GitHub (conveniently for both .NET and Node) really prove the extensive capabilities of this service.

Read more of this post

BizTalk SB-Messaging Receive Adapter Suspends Brokered Messages Without a Body

When it comes to processing zero-byte messages, the built-in receive adapters in BizTalk Server are somewhat inconsistent (see this recent post by Mark Brimble for more information). However, it seems that most receive adapters do not successfully process messages without body content. For example, the File adapter will delete an empty file and kindly put a notification to that effect in the event log. The HTTP adapter will reject a POST request with no content and return a 500 “Internal Server” error. So it probably isn’t any real surprise that the Azure Service Bus Messaging adapter introduced in BizTalk Server 2013 also obstructs bodiless messages. The difference here though is that the message will be successfully received from the queue or topic (and therefore removed from Service Bus), but will immediately be suspended with an error like the following:

A message received by adapter “SB-Messaging” on receive location “SB-ReceivePort_Queue_SB” with URI “sb://<namespace>.servicebus.windows.net/TestQueue” is suspended.
Error details: There was a failure executing the receive pipeline: “Microsoft.BizTalk.DefaultPipelines.PassThruReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35” Source: “Pipeline ” Receive Port: “SB-ReceivePort” URI: “sb://<namespace>.servicebus.windows.net/TestQueue” Reason: The Messaging Engine encountered an error while reading the message stream.

Read more of this post

The exception message is: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’

This post was extremely useful today while troubleshooting an AppFabric error with Service Bus Relays (“System.ServiceModel.ServiceActivationException: The service ‘/MyServices/MyService.svc’ cannot be activated due to an exception during compilation. The exception message is: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’.”) There have been many other posts about this topic, but this is the first one I found that revealed the critical last step of checking the net.pipe binding on the website level (not just the application level)! Well done, Sajid!!

The Code Authors

AppFabric uses this magically generated service endpoint when we configure the services to start automatically.

Problem
System.ServiceModel.ServiceActivationException: The service ” cannot be activated due to an exception during compilation. The exception message is: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’. Verify a base address exists on the site and the protocol is enabled on the application.. —> System.Configuration.ConfigurationErrorsException: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’. Verify a base address exists on the site and the protocol is enabled on the application.

Solution.
Under the advanced settings of the service make sure net.pipe configured as one of the enabled protocols.

appfabricnetpipeerror1

Still see the same error??

Check if the website has this binding enabled.

appfabricnetpipeerror2

And verify this binding is enabled as protocol on website level.

appfabricnetpipeerror3

View original post

Using Azure Hybrid Connections to Consume an On-Premises WCF Service from the Cloud

Microsoft introduced Hybrid Connections a few weeks ago, a [currently] free version of BizTalk Services that allows you to seamlessly connect Web Sites and Mobile Services hosted in Azure to LOB systems residing within your organisation’s network. Similar to Service Bus Relays, there is no need to open inbound firewall ports as a locally installed agent can establish the connection to Azure from within your network. To help support this feature, Microsoft also introduced a free tier of BizTalk Services specifically to accommodate Hybrid Connections.

The most obvious question asked by most is, “Will this replace Service Bus Relays?”.  After all, they do seem very similar in concept. Michael Stephenson wrote an excellent blog post addressing this very question and identifying the key differences as well as the situations you would most likely choose one technology over the other.

What has sparked my post here is that the only examples I found highlighting this new feature were aimed at connecting to on-premises databases. While this is certainly impressive and useful (especially since your Azure Web Site can use the exact same connection string you would use for on-premises access!), it left me wondering how Hybrid Connections could be used to expose WCF Services within an internal network – without the need for configuring relay bindings.  My interest in this capability has arisen from some recent experiences building hybrid solutions for our clients:

Read more of this post

Service Bus Queue/Topic Partitioning Not Supported in BizTalk Services

The other day my esteemed colleague Bill Chesnut & I were configuring EDI agreements for a client using Microsoft Azure BizTalk Services (MABS). Because we were testing in an isolated development environment, we redirected the actual vendor routing to some Service Bus queues that we created so that we could inspect the messages.

The solution was already routing some messages to pre-existing queues (e.g. for suspended messages) and they were all working just fine. However all messages bound for the new queues we set up were failing with this error message in the tracking database:

This client is not supported for a partitioned entity. The client version should be greater or equal than version ‘2013-10’..58ca562e-49ef-4c92-823d-1a219c3f52bd_G8

This is odd… the new queues were created the same way as the existing ones were, using the “Quick Create” method in the Azure Management Portal. So what was different?

Thankfully it was Bill who remembered a relatively new feature in Service Bus – the addition of partitioned entities for increasing throughput by employing multiple message brokers and stores, introduced late last year. You can find out more details about how this works here.

Read more of this post

WEBCAST: Integrating BizTalk 2013 with Service Bus Queues & Topics

I’ve just uploaded my latest production on the Brisbane BizTalk YouTube Channel, bringing our library up to four webcasts now! This presentation shows how easy it is to integrate BizTalk Server 2013 with Windows Azure Service Bus queues & topics, facilitating the creation of powerful hybrid applications:

Integrating BizTalk with Windows Azure Service Bus Queues & Topics[ http://youtu.be/jQefUBvc4Dk ]

You can also download the slide deck (complete with notes) from SlideShare [ http://www.slideshare.net/dtoomey/integrating-biztalk-2013-with-windows-azure-server-bus-queues-topics ]

Really loving my new RØDE Podcaster USB microphone, and also Camtasia 8.1 which makes editing these videos so easy!

Final Day at TechEd Australia 2013

Today was the final day of TechEd Australia, and I was privileged to attend probably the most relevant session to my chosen specialty area, apart from BizTalk Bill‘s WABS presentation yesterday. Brady Gaster from the Windows Azure SDK team gave a terrific presentation on integrating Windows Azure Websites with On-Premises Systems. billed as a discussion on “various techniques of connecting a Windows Azure Web Site to an on-premises enterprise architecture”. It certainly did not disappoint!

Brady demonstrated the use of Windows Azure Service Bus topics and relays in order to connect a website hosted  application to on-premises systems and databases by running iterative solutions based on an “Enterprise Pizza Store” concept. He used a Service Bus topic to accept orders from photo 2the website and process them, with multiple subscriptions based on the processing status. He then progressed to using Service Bus relays to expose services that perform the database operations rather than having external sources update the data directly. Finally, he included a “surprise demo” that exhibited the use of the Windows Azure SDK for Java, using a Java client to log messages.

All the demos were very smooth and impressive, and effectively demonstrated how easy it is to leverage cloud resources to implement hybrid solutions that cross organisational boundaries. All the code (excluding the “surprise”  Java demo) can be found here on GitHub, while the slides from his USA version of this presentation can be found on Channel9. He also has an extensive blog post on this. I highly recommend checking it out!

Read more of this post

A Cloudy Day for BizTalk (…but what a sunny forecast!)

Recently, Microsoft announced the release of a plethora of new features in Windows Azure, not the least of which was the preview version of BizTalk Services. A re-vamped version of the former Azure Service Bus EAI/EDI Labs which was released last year and taken down earlier this year, Windows Azure BizTalk Services boasts Business-to-Business (B2B) and Enterprise Application Integration (EAI) capabilities for cloud and hybrid integration solutions, including:

  • Built-in support for managing EDI relationships between partners
  • EAI bridges with on-premises assets (including built-in support for integration with SAP, SQL Server, Oracle and Siebel)
  • Optional integration between Windows Azure BizTalk Services and on-premises BizTalk Server deployments
    Like most Azure offerings, BizTalk Services runs on a secure, dedicated per tenant environment that can be provisioned on demand within minutes.  It does not require any upfront license, and supports a pay only for what you use billing model.

Learn more about how to setup and start using the Windows Azure BizTalk Services preview.

John Glisson - Geek of the Cloth

Thoughts on integration, technology and what-not...

prashantbiztalkblogs

My BizTalk Experiences

The CRUCIBLE

THINK: It's not illegal....yet.....

paulbouwer.com

life and technology

Abdul Rafay's BizTalk Blog

My experiences with BizTalk related to architecture, development and performance in my enterprise.

Mike Diiorio

Connected Systems and other thoughts

BizTalk musings

Issues, patterns and useful tips for BizTalk development

EAI Guy.net

Enterprise Applicaiton Integration and SOA 2.0

Connected Pawns

Mainly BizTalk & Little Chess

Man Vs. Machine

Why can't we all just get along?

Adventures inside the Message Box

BizTalk, Azure, and other tools in the Microsoft stack - Johann Cooper

Biz(Talk)2

Talk, talk and more talk about BizTalk

Richard Seroter's Architecture Musings

Blog Featuring Code, Thoughts, and Experiences with Software and Services

Sandro Pereira BizTalk Blog

My notes about BizTalk Server 2004, 2006, 2006 R2, 2009, 2010, 2013 and now also Windows Azure BizTalk Services.

BizTalk Events

Calendar of BizTalk events all over the world!

Mind Over Messaging

Musings on BizTalk, Azure, and Enterprise Integration

The WordPress.com Blog

The latest news on WordPress.com and the WordPress community.