<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ushnash (Ush) shukla</title>
    <description>The latest articles on DEV Community by Ushnash (Ush) shukla (@ushnash).</description>
    <link>https://dev.to/ushnash</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F176363%2F67c5d388-ed38-47f1-95b9-167088f922cf.jpg</url>
      <title>DEV Community: Ushnash (Ush) shukla</title>
      <link>https://dev.to/ushnash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ushnash"/>
    <language>en</language>
    <item>
      <title>Solace PubSub+ vs Kafka: The Basics</title>
      <dc:creator>Ushnash (Ush) shukla</dc:creator>
      <pubDate>Mon, 31 May 2021 18:16:51 +0000</pubDate>
      <link>https://dev.to/solacedevs/solace-pubsub-vs-kafka-the-basics-49m5</link>
      <guid>https://dev.to/solacedevs/solace-pubsub-vs-kafka-the-basics-49m5</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fblog-featured-image-kafka-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fblog-featured-image-kafka-1.jpg"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This is the first in a series of blog posts in which we’ll compare Solace &lt;a href="https://solace.com/products/event-broker/" rel="noopener noreferrer"&gt;PubSub+ Event Broker&lt;/a&gt; with Apache Kafka. Our goal is to help you understand the salient differences between the platforms, arming you with the knowledge you need to select the right &lt;a href="https://solace.com/blog/what-is-an-event-streaming-platform/" rel="noopener noreferrer"&gt;streaming platform&lt;/a&gt; for your organization. For a quick 5-minute overview, &lt;a href="https://solace.com/resources/solace-with-kafka/solace-vs-kafka-event-topics-video" rel="noopener noreferrer"&gt;check out this video&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Apache Kafka
&lt;/h2&gt;

&lt;p&gt;Apache Kafka is a distributed data-ingest and event streaming platform developed in 2011 by &lt;a href="https://insidebigdata.com/2016/04/28/a-brief-history-of-kafka-linkedins-messaging-platform/" rel="noopener noreferrer"&gt;engineers at LinkedIn&lt;/a&gt; for consuming large volumes of log data. Although commonly called a &lt;em&gt;broker&lt;/em&gt;, Kafka is more akin to a distributed data store than a traditional message broker. For example, Kafka only supports publish/subscribe messaging by default, and uses the concept of an ever-increasing commit log, where messages are generally retained indefinitely.&lt;br&gt;&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2021%2F05%2Fsolace-v-kafka-blog-1-kafka-1024x574.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2021%2F05%2Fsolace-v-kafka-blog-1-kafka-1024x574.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Operationally, Apache Kafka brokers run in a cluster coordinated by Apache Zookeeper. Producers publish records to consumers on named &lt;em&gt;topics&lt;/em&gt;. Messages, termed &lt;em&gt;records&lt;/em&gt;, are prepended to predefined topics and identified with an offset. Topics may be spread across multiple Kafka brokers using a strategy known as &lt;em&gt;topic partitioning&lt;/em&gt;, wherein each broker stores a subset of records intended for a given topic. Consumers ingest messages from all partitions (i.e., the entire topic).&lt;/p&gt;

&lt;h2&gt;
  
  
  About PubSub+ Event Broker
&lt;/h2&gt;

&lt;p&gt;Solace PubSub+ Event Broker offers event streaming along with traditional message broker functionality. Initially developed in 2001 as a purpose-built messaging appliance for the capital markets, the broker has since been virtualized and implemented in both standalone software and SaaS form-factors.&lt;/p&gt;

&lt;p&gt;Solace PubSub+ supports several messaging exchange patterns including publish/subscribe, FIFO queueing, and asynchronous request/reply, and  both persistent and non-persistent qualities of service. With persistent messaging, producers send events to consumers using queues; events arrive at the queue in FIFO order and are removed only once receipt is confirmed by the consumer. Non-persistent messaging supports pub/sub whereby one or more publishers send messages to multiple subscribers across topics. Unlike Apache Kafka, topics in Solace PubSub+ Event Broker are not partitioned or persistent — senders and receivers exchange messages across a single, reliable session that does not persist messages when consumers are offline.&lt;br&gt;&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2021%2F05%2Fsolace-v-kafka-blog-1-Solace-1024x526.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2021%2F05%2Fsolace-v-kafka-blog-1-Solace-1024x526.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To understand more about Solace topics vs Kafka topics, check out this popular video by Developer Advocate Aaron Lee or check out his blog post &lt;a href="https://solace.com/blog/solace-topics-vs-kafka-topics/" rel="noopener noreferrer"&gt;Solace Topics vs. Kafka Topics: What’s the Difference?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As you can see, Kafka and Solace PubSub+ have two very different internal architectures. In the &lt;a href="https://solace.com/blog/solace-pubsub-vs-kafka-comparison-publish-subscribe-messaging-pattern/" rel="noopener noreferrer"&gt;next post&lt;/a&gt;, my colleague Himanshu Gupta will compare each platform’s publish/subscribe functionality in greater detail. Meanwhile, you can visit our website to read more about &lt;a href="https://solace.com/differences/kafka/" rel="noopener noreferrer"&gt;how Solace PubSub+ compares to Kafka&lt;/a&gt; or check out this handy &lt;a href="https://solace.com/resources/solace-with-kafka/solace-vs-kafka-comparison-datasheet" rel="noopener noreferrer"&gt;one-page datasheet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/solace-pubsub-vs-kafka-the-basics/" rel="noopener noreferrer"&gt;Solace PubSub+ vs Kafka: The Basics&lt;/a&gt; appeared first on &lt;a href="https://solace.com" rel="noopener noreferrer"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>forarchitects</category>
      <category>fordevelopers</category>
    </item>
    <item>
      <title>How a Strong Digital Backbone is Transforming Life Insurance</title>
      <dc:creator>Ushnash (Ush) shukla</dc:creator>
      <pubDate>Thu, 22 Oct 2020 13:00:10 +0000</pubDate>
      <link>https://dev.to/solacedevs/how-a-strong-digital-backbone-is-transforming-life-insurance-5em</link>
      <guid>https://dev.to/solacedevs/how-a-strong-digital-backbone-is-transforming-life-insurance-5em</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zVos6dmb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/01/v2_DARK_Introducing-the-Solace-PubSub-for-PCF-Tile-Version-2.2.0-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zVos6dmb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/01/v2_DARK_Introducing-the-Solace-PubSub-for-PCF-Tile-Version-2.2.0-1.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Like many industries today, the insurance industry is being inundated with changing customer demands and expectations — especially as main demographic segments change. However, the digital transformation necessary to meet these challenges is happening much slower for life insurance companies.&lt;/p&gt;

&lt;p&gt;Digital transformation for life insurance companies means improved customer experience, better employee engagement, and dramatic bottom-line benefits. The insurance companies that are making the change in this industry are leaping ahead of the pack — not just because they’re serving their customers and employees better, but because so many of their competitors are simply slow to change.&lt;/p&gt;

&lt;p&gt;In one recent example, a well-known American life insurance and annuities (L/A) provider identified the changes in their customers’ expectations and preferences, and took action. They moved from a batch-based approach to an event-driven communication model to improve actuarial data collection and analysis, marketing, customer experience, and more. This set the company apart from competitors in many unique ways.&lt;/p&gt;

&lt;p&gt;Read on to learn more about the market shifts driving digital transformation in the insurance industry, and how leaders like our American life insurance client are transforming to keep up — and better yet, to keep ahead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Insurance Customer Experience Matters Now More Than Ever
&lt;/h2&gt;

&lt;p&gt;In their recent report, &lt;a href="https://www.mckinsey.com/~/media/McKinsey/Industries/Financial%20Services/Our%20Insights/The%20growth%20engine%20Superior%20customer%20experience%20in%20insurance/The_growth_engine_Superior_customer_experience_in_insurance_May_2016.ashx"&gt;&lt;em&gt;The Growth Engine: Superior Customer Experience in Insurance&lt;/em&gt;&lt;/a&gt;, McKinsey notes that customer experience can do far more to drive profitable growth than raising advertising spend &lt;em&gt;or&lt;/em&gt; lowering prices.&lt;/p&gt;

&lt;p&gt;They point to a joint J.D. Power study to illustrate this: In the last five years, U.S. auto insurance carriers that have consistently provided best-in-class experiences to their customers generated two to four times more new business growth and around 30% higher profitability. This is likely because happy customers are 80% more likely to renew their policies than unhappy customers, and the cost of retaining customers is lower than the cost of generating new customers.&lt;/p&gt;

&lt;p&gt;With that in mind, it’s easy to see why better customer experience drives growth and profit for insurance companies. But as is the case across &lt;em&gt;every&lt;/em&gt; industry today, customer expectations are changing, and insurance companies are struggling to figure out what this means for them.&lt;/p&gt;

&lt;p&gt;While insurtechs are stepping in to satisfy the increasing demand from customers for instant digital transactions across channels, they haven’t yet captured a meaningful share of the market. This leaves room for incumbent life insurance providers to step up to the plate with digital transformation that serves their customers in this way. However, this gap is closing quickly.&lt;/p&gt;

&lt;p&gt;Our life insurance customer saw this happening and were concerned that if they didn’t move quickly, they’d fall behind not only their competition, but insurtech startups.&lt;/p&gt;

&lt;p&gt;They were moving data in batches, point-to-point through REST-based APIs, so data collection and analysis were periodic at best. Their IT infrastructure and data were not well-integrated across different agencies, states, and lines of business, so leveraging data across these environments to deliver better customer experience was nearly impossible. This also resulted in poorly timed and impersonal marketing, and the inability to give their agencies and support agents a complete, real-time view of the customer’s profile.&lt;/p&gt;

&lt;p&gt;To get ahead of the problem, they designed a digital transformation plan that prioritized real-time data movement across different environments so the entire company could serve life insurance customers better and faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Digital Transformation Is Creating a More Personal Life Insurance Customer Experience
&lt;/h2&gt;

&lt;p&gt;One common problem across the life insurance industry is a difference in how the customer journey is viewed. Customers view each touchpoint with an insurance provider as a step in a single journey toward a personal goal — while insurers tend to look at each touchpoint as a discrete event. This is likely the result of the fact that insurance providers have historically been very siloed, which makes coordination across silos a huge challenge.&lt;/p&gt;

&lt;p&gt;Creating a strong digital backbone and tools that connect all customer events through choreography, eliminates these siloes, while improving customer experience while offering greater personalization and speed.&lt;/p&gt;

&lt;p&gt;The reality is that customers and partners want digital tools today. Digital natives (younger generations that have grown up with technology) &lt;a href="https://www2.deloitte.com/content/dam/insights/us/articles/4381_Life-insurance/DI_Life-insurance.pdf"&gt;prefer to purchase for and interact with insurance companies digitally&lt;/a&gt; — which poses a problem for carriers that don’t have these capabilities.&lt;/p&gt;

&lt;p&gt;McKinsey sums it up this way in their &lt;a href="https://www.mckinsey.com/~/media/mckinsey/industries/financial%20services/our%20insights/where%20the%20life%20insurance%20industry%20can%20go%20from%20here/life-insurance-and-annuities-state-of-the-industry-2018.ashx"&gt;life insurance and annuities state of the industry report&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Financial advisers and captive general agents will expect a digital interface and automated tools in their interactions with insurance home offices and wholesalers — same as their customers. Successful insurers will focus on improving the partner experience to help elevate the customer experience.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our life insurance client addressed these challenges with a new core policy administrative system called &lt;a href="https://www.fasttechnology.com/"&gt;FAST&lt;/a&gt;. This was a more agile and flexible alternative to their traditional application, and exposes events in real-time. To enable the event-driven interactions within the new system, they adopted &lt;a href="https://solace.com/products/event-broker/"&gt;Solace PubSub+&lt;/a&gt; as the digital backbone.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Digital Transformation Benefits the Employee Experience
&lt;/h2&gt;

&lt;p&gt;While a recent &lt;a href="https://www.aon.com/attachments/human-capital-consulting/2015-Trends-in-Global-Employee-Engagement-Report.pdf"&gt;Aon Global Employee Engagement report&lt;/a&gt; found that a 5% increase in employee engagement has been shown to lead to a 3% increase in revenue, the insurance workforce is operating under some unique circumstances.&lt;/p&gt;

&lt;p&gt;Baby boomers made up &lt;a href="https://www2.deloitte.com/us/en/insights/industry/financial-services/financial-services-industry-outlooks/insurance-industry-outlook.html"&gt;one-fourth of the insurance workforce in 2018&lt;/a&gt; (31% of insurance agents and 24% of underwriters) — but they are rapidly approaching the traditional retirement age. As these seasoned professionals exit the industry en masse, a wealth of institutional knowledge will go with them. And to fill these nearly 400,000 job openings and close this talent gap, the industry needs to shift tactics to appeal to younger generations.&lt;/p&gt;

&lt;p&gt;Part of this shift must include an emphasis on the high-tech, flexible work environment an insurance career can offer. And those can’t be empty promises.&lt;/p&gt;

&lt;p&gt;A digital backbone with event streaming can help make sure data gets to the right place at the right time. Digital tools also enable remote work and better cross-organizational collaboration. For generations of workers who value flexibility and digital communication, these tools aren’t just perks, they’re critical.&lt;/p&gt;

&lt;p&gt;The right technology backbone can also help insurance employees shift the conversation from sales to service. In an industry where most communications are sales-focused, putting the focus on serving the customer and building trust can have far-reaching effects. In fact, proactive communication about insurance-related activities or events (such as a burglary in the customer’s neighborhood, or an impending flood), faster approval/denial of insurance coverage decisions, and quicker claims processing can mean the difference between customer loyalty and attrition.&lt;/p&gt;

&lt;p&gt;Our insurance client used their new digital backbone with event-streaming to equip their call center agents with a real time, 360-degree view of the customer profile which includes details on the customer’s interactions with the company. Now agents are empowered to answer questions on the spot when customers call in and they have the information required to be of greater service.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom-Line Benefits of Digital Transformation for Life Insurance Companies
&lt;/h2&gt;

&lt;p&gt;The life insurance industry may be lagging behind others when it comes to digital transformation, but as more insurance companies reap the bottom-line benefits, the faster the transformation will happen across the industry. The leaders who are leaping ahead already are seeing benefits like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI and data working together to make the business more agile and easier to scale.&lt;/li&gt;
&lt;li&gt;Leveraging the wealth of information they have in mainframes and legacy tech.&lt;/li&gt;
&lt;li&gt;Penetrating large, untapped market segments like younger, digitally native customers.&lt;/li&gt;
&lt;li&gt;Capitalizing on faster-growing emerging markets, such as Asian consumers who are &lt;a href="https://www.mckinsey.com/~/media/mckinsey/industries/financial%20services/our%20insights/where%20the%20life%20insurance%20industry%20can%20go%20from%20here/life-insurance-and-annuities-state-of-the-industry-2018.ashx"&gt;more open to making financial decisions online&lt;/a&gt;, on mobile devices or through social media.&lt;/li&gt;
&lt;li&gt;Improving the company risk profile overall, and company risk with individual policyholders, by leveraging data collected through wearable devices.&lt;/li&gt;
&lt;li&gt;More easily leveraging new applications and cloud services.&lt;/li&gt;
&lt;li&gt;Smoother integration of acquired lines of business with different tools and technologies.&lt;/li&gt;
&lt;li&gt;Knowing their customers better to improve cross-selling and upselling across lines of business.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Digital Transformation Is Already Making a Difference in the Life Insurance Industry — What’s Holding You Back?
&lt;/h2&gt;

&lt;p&gt;In their recent &lt;a href="https://www.accenture.com/us-en/insights/financial-services/digital-transformation-remaking-insurance"&gt;&lt;em&gt;Insurance | Digital Transformation Remaking an Industry&lt;/em&gt;&lt;/a&gt; report, Accenture found that executives believe the biggest obstacles to achieving desired results from technology investments are lack of systems integration or compatibility and lack of collaboration with the IT function.&lt;/p&gt;

&lt;p&gt;Finding technology solutions that allow the different parts of the business to work together efficiently is key to solving these challenges — and a digital backbone can help solve this problem.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/digital-transformation-life-insurance/"&gt;How a Strong Digital Backbone is Transforming Life Insurance&lt;/a&gt; appeared first on &lt;a href="https://solace.com"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>company</category>
      <category>usecases</category>
    </item>
    <item>
      <title>Using PubSub+ Event Portal for Support and Visualization of your Kafka Streams</title>
      <dc:creator>Ushnash (Ush) shukla</dc:creator>
      <pubDate>Mon, 31 Aug 2020 14:51:40 +0000</pubDate>
      <link>https://dev.to/solacedevs/using-pubsub-event-portal-for-support-and-visualization-of-your-kafka-streams-4lg0</link>
      <guid>https://dev.to/solacedevs/using-pubsub-event-portal-for-support-and-visualization-of-your-kafka-streams-4lg0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cUiRAXQm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/03/blog-featured-image-kafka-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cUiRAXQm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/03/blog-featured-image-kafka-1.jpg" alt=""&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;One of the persistent challenges with a distributed architecture—like with Kafka—is the ability to design your streams for reuse and supportability. This is especially true for large enterprises, where you may have hundreds, if not thousands, of streams, publishers, and consumers interacting with each other. In this post I’ll briefly introduce &lt;a href="https://solace.com/products/portal/"&gt;PubSub+ Event Portal&lt;/a&gt; and explore several features that help streamline the visualization, development, and support of your Kafka streams.&lt;/p&gt;

&lt;h2&gt;
  
  
  PubSub+ Event Portal
&lt;/h2&gt;

&lt;p&gt;PubSub+ Event Portal is a revolutionary event management tool to design, create, catalog, discover, share, visualize, secure, and manage your enterprise’s entire event-driven ecosystem.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_01.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--guhAlXBu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_01.jpg" alt="kafka streams visualization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more information about PubSub+ Event Portal, read &lt;a href="https://docs.solace.com/Solace-Cloud/Event-Portal/event-portal.htm"&gt;Solace Documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the next sections, I will touch on a few of the salient aspects of the Event Portal which make it a great tool for application development and support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Event Designer: Improved Application Visibility
&lt;/h3&gt;

&lt;p&gt;Visibility is key to robust distributed applications. It allows you to easily get answers to questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who are the publishers and consumer groups?&lt;/li&gt;
&lt;li&gt;Which topic(s) are they connecting across?&lt;/li&gt;
&lt;li&gt;What data is being exchanged, and in what format?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Event Designer, a tool in the Event Portal, significantly enhances visibility for support engineers and developers with microservices visualization – a feature which lets them &lt;em&gt;visualize&lt;/em&gt; which microservices are members in Kafka event streams as well as the events and schemas (Avro, JSON, XML, …) they are exchanging across topic(s).&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_02.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jrnEjHo2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_02.jpg" alt="kafka streams visualization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the developer’s perspective, they can now build their microservice with a fuller understanding of how it plays into the broader enterprise ecosystem. Similarly, support engineers can immediately narrow their focus to only the systems that may be affected by a misbehaving service.&lt;/p&gt;

&lt;p&gt;Another key aspect of Event Designer is its ability to enumerate events and schemas. Since the portal validates schemas during design time, developers can be certain they are publishing data that is structurally consistent, which then significantly reduces errors related to schema mismatches between publishers and consumers.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_03.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RyoGqiid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_03.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Event Catalog: Event and Application Searchability
&lt;/h3&gt;

&lt;p&gt;Event Catalog, another Event Portal tool, provides a searchable index of all event-related objects within an enterprise.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_04.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tx3NuaAM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2020/08/pep-accelerate-support-kafka-event-streams_04.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers, this increases opportunities for reuse since they need only search for an object (event, topic, schema, application) of interest to determine what is already available for use. From a support perspective, Event Catalog again lets engineers quickly sift out related objects during a troubleshooting exercise.&lt;/p&gt;

&lt;h3&gt;
  
  
  AsyncAPI Code Generation: Application Consistency
&lt;/h3&gt;

&lt;p&gt;A final feature that enables consistency from design through to development and support is the Event Portal’s code generation capabilities. Once architects complete their modeling in Event Designer, developers can export an AsyncAPI spec of the model to any number of &lt;a href="https://www.asyncapi.com/blog/asyncapi_codegen_scst/"&gt;code generators&lt;/a&gt;. The resulting code stubs use the schemas, topics, and names as envisioned by the enterprise architect, leaving the developer to focus on core business logic. This level of deep consistency greatly reduces the number of elements that the application support staff needs to consider when doing root cause analysis.&lt;/p&gt;

&lt;p&gt;For example, a developer could pass the model through a Spring Cloud Streams generator and apply a Kafka binder to the stream. This results in a publisher/consumer in far fewer steps—and with potentially greater design integrity—than writing the code from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;PubSub+ Event Portal is truly disruptive. It offers architects, developers, and support engineers an unprecedented level of control when creating distributed applications that are better designed for reuse and supportability across the enterprise. Its features are ideal for Kafka streams visualization and development.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/event-portal-kafka-streams-visualization/"&gt;Using PubSub+ Event Portal for Support and Visualization of your Kafka Streams&lt;/a&gt; appeared first on &lt;a href="https://solace.com"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>forarchitects</category>
      <category>fordevelopers</category>
    </item>
    <item>
      <title>How to use  Solace PubSub+ Event Broker and Postman for RESTful Request/Reply</title>
      <dc:creator>Ushnash (Ush) shukla</dc:creator>
      <pubDate>Mon, 25 Nov 2019 15:32:59 +0000</pubDate>
      <link>https://dev.to/solacedevs/how-to-use-solace-pubsub-event-broker-and-postman-for-restful-request-reply-3ail</link>
      <guid>https://dev.to/solacedevs/how-to-use-solace-pubsub-event-broker-and-postman-for-restful-request-reply-3ail</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FbHM9eqi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/blog-featured-image_postman.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FbHM9eqi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/blog-featured-image_postman.jpg" alt=""&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.getpostman.com/"&gt;&lt;u&gt;Postman&lt;/u&gt; &lt;/a&gt;is perhaps the most popular tool for quickly bootstrapping RESTful interactions. Since Solace PubSub+ Software Event Broker natively supports several protocols including HTTP, it makes sense to explore some of what PubSub+ Event Broker offers using Postman.&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll use a rudimentary request and reply scenario to produce HTTP to the broker and consume the request as JMS on the backend. Notice that we don’t need to write any API transformation. PubSub+ Event Broker seamlessly translates between HTTP and JMS for us.&lt;/p&gt;

&lt;p&gt;Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Postman sends an HTTP request to PubSub+ Event Broker: Cloud&lt;/li&gt;
&lt;li&gt;A Springbootbackend application consumes the request using JMS.&lt;/li&gt;
&lt;li&gt;The backend application replies to Postman with a “Hello World” type string.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---HSk9B6u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Figure 1: Simple Application for Postman&lt;/p&gt;

&lt;p&gt;For brevity we avoid the use of TLS on either end. Also, the reply is sent on a dynamically generated reply topic, which I haven’t shown.&lt;/p&gt;

&lt;h3&gt;
  
  
  Downloads
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/solacese/jms-hello-world"&gt;Simple Springboot JMS Consumer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up an Instance of PubSub+ Event Broker: Cloud Free Plan
&lt;/h2&gt;

&lt;p&gt;This is probably the easiest step in the entire tutorial! We setup a cloud instance of the broker to allow for communication between Postman and our backend consumer, as depicted in Figure 1.&lt;/p&gt;

&lt;p&gt;If you already have an account, you can skip this step.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://cloud.solace.com/"&gt;https://cloud.solace.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click  &lt;strong&gt;Get started&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill up the form and click  &lt;strong&gt;Sign Up&lt;/strong&gt; to create a free account.&lt;/li&gt;
&lt;li&gt;Log in using the link you receive in the activation email.
You’ll see the Services page and a single + tile.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cJ9AyH8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-2.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click the + tile to get to the Create Service
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VQ9eqXx4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-3.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Follow the steps outlined in the image below to create a free event broker service on an available AWS region.
Note: Currently, the Free tier is offered only on AWS.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-4.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v5RyJi-H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-4.png" alt=""&gt;&lt;/a&gt;
Your service is up and running in a few seconds.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-5.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BSROGaW7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-5.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Set up Postman
&lt;/h2&gt;

&lt;p&gt;Before we wire up any applications, let’s set up Postman to interact with the broker.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fire up Postman and click  &lt;strong&gt;New &amp;gt; Request&lt;/strong&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-6.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zlSykO2f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-6.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Save the request in an existing Collection or create one for this tutorial.
Personally, I created a new one named  &lt;strong&gt;Postman to Solace **&lt;/strong&gt; PubSub *&lt;em&gt;**+&lt;/em&gt;*.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-7.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jy5zEcVO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-7.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Change the METHODto POST for the blank request as PubSub+ Event Broker only handles HTTP POST requests by default.
You can enable other HTTP verbs using &lt;a href="https://docs.solace.com/Configuring-and-Managing/Microgateways.htm"&gt;Microgateways&lt;/a&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-8.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XI8FR7K6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-8.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;To communicate with PubSub+ Event Broker, head over to the instance of PubSub+ Event Broker: Could that you created earlier and click the &lt;strong&gt;Connect&lt;/strong&gt; tab.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-9.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zLazVMHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-9.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Select  &lt;strong&gt;View by: &amp;gt; Protocol&lt;/strong&gt; in the top right hand and  scroll down to the  &lt;strong&gt;REST&lt;/strong&gt;  Expand the section to view the  &lt;strong&gt;Connection Details&lt;/strong&gt; for your service.  In our case, we are interested in Username, Password, and REST Host.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-10.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7yFDvhnN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-10.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Back in Postman, enter the POST Host, Username, and Password details from the above step, paste them into the related fields, and click  &lt;strong&gt;Save&lt;/strong&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-11.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AETn3YF5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-11.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Append &lt;code&gt;/T/service/requestto&lt;/code&gt; the Host URL in Postman. This routes the request to the &lt;code&gt;T/service/request&lt;/code&gt; topic on the broker.
Note 1: PubSub+ creates the topic dynamically on the server side.
Note 2: The request body is left empty intentionally.&lt;/li&gt;
&lt;li&gt;Save the request and click  &lt;strong&gt;Send&lt;/strong&gt;.
You should get an empty response with an HTTP 200 Postman and our instance of PubSub+ Event Broker: Cloud are now talking!
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-12.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RUDY3IYU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-12.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Our Springboot Consumer
&lt;/h2&gt;

&lt;p&gt;Our Springboot JMS consumer replies to any requests received on &lt;code&gt;T/service/request&lt;/code&gt;. Spring handles the JMS configuration boilerplate, leaving us free to focus on the relevant application logic.&lt;/p&gt;

&lt;p&gt;Using JMS with Spring is a deep topic outside the scope of this tutorial. Read this tutorial to learn the details.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Maven Configuration&lt;/strong&gt;**  **
&lt;/h3&gt;

&lt;p&gt;We import Solace’s Springboot starter to make life easier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.solace.spring.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;solace-jms-spring-boot-starter&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;3.2.0&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Java Code
&lt;/h3&gt;

&lt;p&gt;This is the primary class that processes messages received on T/service/request and replies appropriately. As you can see, all the code does is reply with “Hello” prepended to the request body.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.solace.jmshelloworld; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class Receiver { @JmsListener(destination = "${app.jms.topic}", containerFactory = "myFactory") public String receiveMessage(String message) { System.out.printf("Received &amp;lt;%s&amp;gt;\n", message); return "Hello " + message + "!"; } }  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Application Properties
&lt;/h3&gt;

&lt;p&gt;We set the various properties used by both our service and the Solace PubSub+ Springboot starter.&lt;br&gt;&lt;br&gt;
You can get the PubSub+ Event Broker properties from Solace Messaging &amp;gt; Solace JMS API under the  &lt;strong&gt;Connect&lt;/strong&gt;  tab of your Solace PubSub+ Event Broker: Cloud instance. Be sure to select  &lt;strong&gt;View By: Protocol&lt;/strong&gt;  in the top right hand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Solace propertiessolace.jms.host = tcp://mr1ilyoa01l8fn.messaging.solace.cloud:20352solace.jms.msgVpn = msgvpn-1nljqp0y1addsolace.jms.clientUsername= &amp;lt;u&amp;gt;solace-cloud-clientsolace.jms.clientPassword= &amp;lt;u&amp;gt;a29qovgiu8io1buvub6pm3gbv4#Topic for incoming requestapp.jms.topic = T/service/request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We start the service from the command line using mvn clean spring-boot:run&lt;/p&gt;

&lt;p&gt;Assuming everything was configured correctly, the application should fire up and begin listening for request messages.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-13.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tSXqzJvg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-13.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Finalizing our Postman Setup
&lt;/h2&gt;

&lt;p&gt;Since this is a request/reply exercise, we need to ask PubSub+ Event Broker to keep the HTTP session open for a reply. We do this by setting the &lt;code&gt;Solace-Reply-Wait-Time-In-ms&lt;/code&gt; to a reasonable value in milliseconds. This also has the effect of creating a temporary reply-topic on the broker where our Springboot service will send responses.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-14.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Dq3wzyw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-14.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, put your name (or any string, really) in the Body.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-15.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1uVNdgSQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-15.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the Integration
&lt;/h2&gt;

&lt;p&gt;Time to test what we built! You should have the following configured and running:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A PubSub+ Event Broker: Cloud instance&lt;/li&gt;
&lt;li&gt;Postman configured to send requests to the PubSub+ Event Broker and wait for responses&lt;/li&gt;
&lt;li&gt;A SpringbootJMS application listening for messages on &lt;code&gt;T/service/request&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Save your Postman request and click  &lt;strong&gt;Send&lt;/strong&gt;. If everything goes well, Postman will receive a greeting from the backend service.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-16.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i-tGJXuM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-16.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-17.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0BhZ96HP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/11/postman-blog_picture-17.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That’s it! In a few easy steps, we were able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send an HTTP request to PubSub+ using Postman.&lt;/li&gt;
&lt;li&gt;Consume the request in Java using JMS and respond back to Postman using HTTP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The PubSub+ Event Broker took care of all the necessary API and protocol transformations for us.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/pubsub-postman-restful-request-reply/"&gt;How to use  Solace PubSub+ Event Broker and Postman for RESTful Request/Reply&lt;/a&gt; appeared first on &lt;a href="https://solace.com"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>solace</category>
      <category>postman</category>
      <category>rest</category>
    </item>
    <item>
      <title>Setting up a REST Delivery Point for SOAP Endpoints</title>
      <dc:creator>Ushnash (Ush) shukla</dc:creator>
      <pubDate>Thu, 18 Apr 2019 20:54:45 +0000</pubDate>
      <link>https://dev.to/solacedevs/setting-up-a-rest-delivery-point-for-soap-endpoints-2e9f</link>
      <guid>https://dev.to/solacedevs/setting-up-a-rest-delivery-point-for-soap-endpoints-2e9f</guid>
      <description>&lt;p&gt;Fronting synchronous HTTP endpoints with queues and topics allows senders and receivers of information to actively participate in event-driven systems, which are usually the domain of asynchronous messaging interactions.&lt;/p&gt;

&lt;p&gt;Solace PubSub+ lets you front HTTP endpoints with queues and topics by proxying RESTful calls via REST Delivery Points (RDPs) and API Microgateway software. In this post I’ll discuss the differences between those options and show you how to use the API Microgateway to proxy a &lt;a href="https://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; Web service. To keep things interesting, our sample Web service requires clients to use both TLS and WS-Security.&lt;/p&gt;

&lt;p&gt;Here’s a visual overview of what we’ll be doing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-1.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mLRu8F_D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-1.jpg" alt=""&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to set up, configure and use PubSub+, and obviously you’ll need a copy of PubSub+, which you can &lt;a href="https://dev.to/downloads/"&gt;download here.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to install and use Docker and Linux&lt;/li&gt;
&lt;li&gt;About SOAP Web Services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Differences Between the API Microgateway and RDP
&lt;/h2&gt;

&lt;p&gt;Solace PubSub+ supports two approaches to RESTful messaging, namely REST messaging mode and the API Microgateway or REST gateway mode. The table below summarizes some of the key differences between the two approaches.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;REST Messaging Mode&lt;/th&gt;
&lt;th&gt;REST Gateway Mode (Microgateway)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default mode&lt;/td&gt;
&lt;td&gt;Fire &amp;amp; Forget (request/reply optional)&lt;/td&gt;
&lt;td&gt;Request/Reply&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Propagates HTTP headers?&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supports all HTTP verbs?&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Receive requests on&lt;/td&gt;
&lt;td&gt;Queues&lt;/td&gt;
&lt;td&gt;Topics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In short, we tend to use RDPs when the use case calls for sending vanilla HTTP POSTs, with &lt;em&gt;optional&lt;/em&gt; request/reply semantics. Since we want a reply from the &lt;code&gt;postoffice&lt;/code&gt; endpoint and may need to optionally set the &lt;code&gt;SOAPAction&lt;/code&gt; header, the Microgateway approach is the better choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Find a Secure SOAP Web service
&lt;/h3&gt;

&lt;p&gt;First, we need to find a SOAP Web service that supports HTTPS and WS-Security. Fortunately, Canada Post offers several APIs that match these criteria once you register with their free &lt;a href="https://www.canadapost.ca/cpo/mc/business/productsservices/developers/services/gettingstarted.jsf"&gt;Developer Program&lt;/a&gt;. Why Canada Post? Because we’re a proud Canadian company!&lt;/p&gt;

&lt;p&gt;For this tutorial, we’ll be querying the &lt;code&gt;GetNearestPostOffice&lt;/code&gt; operation to find postal outlets near Solace’s headquarters in Ottawa, Canada.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fire Up a Solace PubSub+ Instance
&lt;/h3&gt;

&lt;p&gt;Next, we need to set up a PubSub+ instance. The simplest way to achieve this is via the PubSub+ Docker Compose &lt;a href="https://github.com/SolaceLabs/solace-single-docker-compose"&gt;YAML&lt;/a&gt;. Be sure to uncomment the line exposing the &lt;code&gt;REST Default VPN&lt;/code&gt; port, i.e. 9000. Without this, we won’t be able to execute an HTTP POST against the PubSub+ instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Log in to Your Broker Instance
&lt;/h3&gt;

&lt;p&gt;Once the container boots up, log in to &lt;a href="http://localhost:8080/"&gt;http://localhost:8080&lt;/a&gt; in your browser with the username &lt;code&gt;admin&lt;/code&gt; and password &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-2.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7yoVXV7X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-2.jpg" alt="Log in to Your Broker Instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should now have a secure SOAP Web service from Canada Post, a PubSub+ instance, and be logged in to your broker instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up the Microgateway
&lt;/h2&gt;

&lt;p&gt;In this section I’ll explain how to enable the Microgateway connectivity, then create the RDP, a REST consumer, and a queue binding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enable the Microgateway Connectivity
&lt;/h3&gt;

&lt;p&gt;To enable the Microgateway connectivity:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Message VPN &amp;gt; Connectivity &amp;gt; REST.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Change the service’s mode to Gateway.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-3.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vH2AdkkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-3-1024x549.jpg" alt="Enabling Microgateway Connectivity"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keep in mind that microgateways operate at the VPN level, which means you cannot mix and match REST Delivery Points and gateways for a given VPN.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create the RDP
&lt;/h3&gt;

&lt;p&gt;Although distinct, gateways leverage RDPs internally to achieve service connectivity. Consequently, we still need to set up an RDP to connect to our Canada Post service.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the default VPN and go to *&lt;em&gt;Client Connections &amp;gt; REST. *&lt;/em&gt; This will bring up the RDP configuration page.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-4.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JULD3Xs0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-4-1024x609.jpg" alt="Click on the default VPN and go to Client Connections &amp;gt; REST. This will bring up the RDP configuration page."&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click on the green &lt;strong&gt;REST Delivery Point&lt;/strong&gt; button in the top right corner.&lt;/li&gt;
&lt;li&gt;Give your RDP a name (e.g. Canada Post) and click &lt;strong&gt;Create&lt;/strong&gt;. Keep in mind that this step does not do anything functional. We’re simply establishing a top-level bucket for the actual SOAP configuration.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-5.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q35LI4DN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-5-1024x609.png" alt="Keep in mind that this step does not do anything functional. We’re simply establishing a top-level bucket for the actual SOAP configuration."&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Leave the defaults and click &lt;strong&gt;Apply&lt;/strong&gt;. Do not turn on Enabled yet.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-6.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xMJ4BPK1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-6-1024x609.jpg" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The newly created RDP is displayed in the Downstate along with some operational data.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-7-retake.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6vI667Wo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-7-retake-1024x549.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Create a REST Consumer
&lt;/h3&gt;

&lt;p&gt;To create a REST consumer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the newly created RDP to drill down to &lt;strong&gt;REST Consumers: Canada Post &amp;gt; REST Consumers.&lt;/strong&gt; This is where we define the connection parameters for the Web service.&lt;/li&gt;
&lt;li&gt;Click on the green &lt;strong&gt;REST Consumer&lt;/strong&gt; button to add a new REST consumer.&lt;/li&gt;
&lt;li&gt;Give the new REST consumer a name that reflects the SOAP endpoint (e.g. &lt;em&gt;postoffice&lt;/em&gt; if the URL is &lt;a href="http://www.canadapost.ca/ws/soap/postoffice"&gt;http://www.canadapost.ca/ws/soap/postoffice&lt;/a&gt;). Though not strictly necessary, naming your endpoint this way helps to keep things identifiable in situations with multiple endpoints.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-8-retake.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pxAGJ2-X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-8-retake-1024x549.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click on your new consumer endpoint, complete the &lt;strong&gt;host&lt;/strong&gt; details, and set the port to 443 for HTTPS. Do not enable the consumer yet.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-9-retake.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L6wVU3o9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-9-retake-1024x549.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Create a Queue Binding
&lt;/h3&gt;

&lt;p&gt;Along with the host, you need to identify the exact endpoint to connect to. Since PubSub+ is primarily an event broker, clients interact with it via queues and topics. Consequently, we need to attach the endpoint to a queue to receive SOAP payloads. This is done through queue bindings.&lt;/p&gt;

&lt;p&gt;To bind a queue, you need to define a queue, bind the queue to the SOAP endpoint, and subscribe the queue to a topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define a Queue
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to the Queues tab and click on the green &lt;strong&gt;+ Queue&lt;/strong&gt; button in the top right corner.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-10.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--10GKxSG_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-10-1024x555.jpg" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a queue in the form of &lt;code&gt;[rdpname].[consumername]&lt;/code&gt; and click &lt;strong&gt;Create&lt;/strong&gt;. This format is not mandatory but useful when you need to quickly identify the queue related to a given SOAP endpoint.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-11-retake.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--87KYsNd---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-11-retake-1024x549.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tune the queue settings as necessary for your implementation and click &lt;strong&gt;Apply&lt;/strong&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-12-retake.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZcviAEJB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-12-retake-1024x549.png" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Bind the Queue to the SOAP Endpoint
&lt;/h3&gt;

&lt;p&gt;Now that we have a queue defined, you can bind it to your SOAP endpoint.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Connections &amp;gt; REST &amp;gt; Canada Post &amp;gt; Queue Binding&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;After clicking on the green &lt;strong&gt;+ Queue Binding&lt;/strong&gt; button, select the queue we previously created and click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the dialog that pops up, enter the SOAP endpoint in the Post Request Target field and click &lt;strong&gt;Apply&lt;/strong&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-13.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mvq8rEfV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-13-1024x555.jpg" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; : Don’t forget the leading “/”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set Up a Topic to Queue Subscription
&lt;/h3&gt;

&lt;p&gt;Microgateway mode requires users to send service requests on a special topic consisting of the &lt;code&gt;HTTP Method&lt;/code&gt; + &lt;code&gt;HTTP Resource Path&lt;/code&gt;. This is then mapped to the queue binding you created above. Listing 1 demonstrates how a topic may be constructed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource path from WSDL: &lt;a href="https://ct.soa-gw.canadapost.ca/rs/soap/postoffice"&gt;https://ct.soa-gw.canadapost.ca &lt;strong&gt;/rs/soap/postoffice&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;HTTP Method: POST&lt;/li&gt;
&lt;li&gt;Resulting PubSub+ topic: POST/rs/soap/postoffice&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;To subscribe our queue to this topic, navigate to &lt;strong&gt;Queues &amp;gt;&lt;/strong&gt;  &lt;strong&gt;postoffice&lt;/strong&gt;  &lt;strong&gt;&amp;gt; Subscriptions&lt;/strong&gt; and click &lt;strong&gt;+ Subscription&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter the relevant subscription and click &lt;strong&gt;Create&lt;/strong&gt;.
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-14.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sy7iKwg1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-14-1024x555.jpg" alt=""&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once subscribed, any requests POSTed to &lt;strong&gt;/rs/soap/postoffice&lt;/strong&gt; on the broker are forwarded to the associated queue, triggering a call to the example Web service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set Up TLS
&lt;/h2&gt;

&lt;p&gt;In this section I’ll explain how to upload the TLS certificates, load the certificate authority and add Trusted Common Names.&lt;/p&gt;

&lt;p&gt;Phew! The service is now set up… well, almost. You’ll notice that we have not enabled anything yet since TLS has not been configured. We will do this by adding the appropriate certificate authorities (CA) to the PubSub+ trust store in PEM format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Certificate Authorities can currently only be setup using the PubSub+ CLI and the Solace Element Management Protocol (SEMP).&lt;/p&gt;

&lt;h3&gt;
  
  
  Upload the TLS Certificates
&lt;/h3&gt;

&lt;p&gt;PubSub+ requires that the entire certificate authority chain for a given site be uploaded to the /certs directory on the broker. Initially obtaining the certificates can be accomplished using a browser or &lt;code&gt;openssl&lt;/code&gt;. However, the exact process is outside the scope of this post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The root &amp;amp; all intermediary CAs must be installed individually on the PubSub+ instance. PubSub+ does not support bundled CAs.&lt;/p&gt;

&lt;p&gt;Once you have the individual certificates, connect to the container’s shell and save each certificate under /usr/sw/jail/certs. The easiest way is to open a text editor in the directory and copy and paste the contents of each certificate to a new file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\UshShukla\&amp;gt;docker exec -it \&amp;lt;PubSub+ container name\&amp;gt; /bin/bash The Solace PubSub+ Standard is proprietary software of Solace Corporation. By accessing the Solace PubSub+ Standard you are agreeing to the license terms and conditions. [root@f0fb1e6fe45d ~]# cd /usr/sw/jail/certs [root@f0fb1e6fe45d ~]# vi geotrust-rsa-ca.pem …paste contents… …save file… …repeat for other certificates…
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Load the Certificate Authority
&lt;/h3&gt;

&lt;p&gt;Now that our CAs are saved, we need to load them into the PubSub+ trust store, as documented &lt;a href="https://docs.solace.com/Configuring-and-Managing/Managing-Certificate-Authorities.htm"&gt;here&lt;/a&gt;. An example of loading the root certificate authority is provided below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root@f0fb1e6fe45d certs]# /usr/sw/loads/currentload/bin/cli -A Solace PubSub+ Standard Version 9.0.0.17 The Solace PubSub+ Standard is proprietary software of Solace Corporation. By accessing the Solace PubSub+ Standard you are agreeing to the license terms and conditions. To purchase product support, please contact Solace at: https://solace.com/contact-us/ Operating Mode: Message Routing Node f0fb1e6fe45d&amp;amp;amp;gt; enable f0fb1e6fe45d# configure f0fb1e6fe45d(configure)# authentication f0fb1e6fe45d(configure/authentication)# create certificate-authority DigiCert-Global-Root-CA f0fb1e6fe45d(.../authentication/certificate-authority)# certificate file digitrust-root-ca.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We name the certificate authority according to the Common Name (CN) (e.g. DigiCert…). This approach reduces the likelihood of duplicating CAs in the trust store.&lt;/p&gt;

&lt;p&gt;Once uploaded to the trust store, the original CA file can be removed from the /certs/ directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add the Trusted Common Names
&lt;/h3&gt;

&lt;p&gt;For PubSub+ to identify the appropriate certificate(s) to use when interacting with the Web service, we need to update our RDP configuration with the Common Names of each certificate. The example below uses &lt;code&gt;openssl&lt;/code&gt; to get this information, though you could just as easily inspect the TLS output of your browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root@f0fb1e6fe45d certs]# openssl s\_client -connect ct.soa-gw.canadapost.ca:443 CONNECTED(00000003) depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA verify return:1 depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018 verify return:1 depth=0 C = CA, ST = Ontario, L = Ottawa, O = Canada Post Corporation, OU = Information Technology-2, CN = stg10.canadapost.ca
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the listing above, we care about all the CN entries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the WebUI, log in and navigate to &lt;strong&gt;Client Connections&amp;gt;REST&amp;gt;Canada Post&amp;gt;REST Consumers&amp;gt;postoffice&amp;gt;TLS Options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on the green &lt;strong&gt;+ Trusted Common Name&lt;/strong&gt; button to add the individual CNs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The completed setup looks like this:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-15.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZopcR-fD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-15-1024x555.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; We added the CN of the leaf certificate too, i.e. stg10.canadapost.com.&lt;/p&gt;
&lt;h2&gt;
  
  
  Enable the RDP and Test the Setup
&lt;/h2&gt;

&lt;p&gt;In this section I’ll explain how to enable the RDP and test the setup.&lt;/p&gt;
&lt;h3&gt;
  
  
  Enable the RDP
&lt;/h3&gt;

&lt;p&gt;We are ready to fire up the REST Delivery Point! Individually enable each of the configuration elements below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST Consumer &amp;gt; postoffice &amp;gt; Enabled&lt;/li&gt;
&lt;li&gt;Client Connections &amp;gt; REST &amp;gt; Canada Post &amp;gt; Enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything has been configured correctly, the RDP status should be Up.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-16.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uBZcQ5dQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-16-1024x549.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can drill down to ensure the REST Consumer is Up, too.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-17.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mQXbdfd0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-17-1024x549.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Test the Setup
&lt;/h3&gt;

&lt;p&gt;We can test our setup using SOAPUI.&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-18.jpg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--doETqzr8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/04/rdp-for-soap_image-18-1024x555.jpg" alt=""&gt;&lt;/a&gt; ** **&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\&amp;lt;?xml version="1.0"?\&amp;gt; - \&amp;lt;soapenv:Envelope xmlns:pos="http://www.canadapost.ca/ws/soap/postoffice" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"\&amp;gt; \&amp;lt;soapenv:Header/\&amp;gt; -\&amp;lt;soapenv:Body\&amp;gt; -\&amp;lt;pos:get-nearest-post-office-request\&amp;gt; \&amp;lt;!--You may enter the following 3 items in any order--\&amp;gt; \&amp;lt;!--Optional:--\&amp;gt; \&amp;lt;locale\&amp;gt;${#Project#language}\&amp;lt;/locale\&amp;gt; \&amp;lt;!--Optional:--\&amp;gt; \&amp;lt;maximum\&amp;gt;2\&amp;lt;/maximum\&amp;gt; -\&amp;lt;search-data\&amp;gt; \&amp;lt;d2po\&amp;gt;true\&amp;lt;/d2po\&amp;gt; \&amp;lt;postal-code\&amp;gt;K2K 3B8\&amp;lt;/postal-code\&amp;gt; \&amp;lt;/search-data\&amp;gt; \&amp;lt;/pos:get-nearest-post-office-request\&amp;gt; \&amp;lt;/soapenv:Body\&amp;gt; \&amp;lt;/soapenv:Envelope\&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The service host in this case is the broker, and we are POSTing to the resource path configured in our topic-queue mapping.&lt;/li&gt;
&lt;li&gt;We enable basic authentication and select the option to &lt;code&gt;Authenticate pre-emptively&lt;/code&gt;. Why? Since PubSub+ acts as a proxy to the final service, it needs to have the entire payload available to send. Otherwise our call will fail. Selecting the option above essentially ensures SOAPUI pre-builds the entire request payload, including the WS-Security headers.&lt;/li&gt;
&lt;li&gt;Be sure to set the SOAPAction HTTP header if necessary. This example does not require it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With a little effort, PubSub+ can let you expose SOAP Web services across an asynchronous messaging architecture, allowing them to fully enjoy the benefits of an event-driven architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more about:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.solace.com/Features/Microgateway-Concepts/Microgateways.htm#contentBody"&gt;Microgateways&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.solace.com/Configuring-and-Managing/Managing-RDPs.htm#managing_rest_messaging_1948951837_1034318"&gt;Managing REST Delivery Points&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/rest-delivery-point-soap/"&gt;Setting up a REST Delivery Point for SOAP Endpoints&lt;/a&gt; appeared first on &lt;a href="https://solace.com"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rest</category>
      <category>soap</category>
      <category>solace</category>
      <category>pubsub</category>
    </item>
  </channel>
</rss>
