<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Wamp on Felix Seifert</title>
		<link>https://felix-seifert.com/blog/tags/wamp/</link>
		<description>Recent content in Wamp on Felix Seifert</description>
		<generator>Hugo</generator>
		<language>en-gb</language>
		
		
		
			<copyright>Felix Seifert</copyright>
		
		
			<lastBuildDate>Sun, 27 Jan 2019 16:24:36 +0000</lastBuildDate>
		
			<atom:link href="https://felix-seifert.com/blog/tags/wamp/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>autobahn-spring: Autobahn|Java and Spring</title>
				<link>https://felix-seifert.com/blog/integrate-autobahnjava-and-spring/</link>
				<pubDate>Sun, 27 Jan 2019 16:24:36 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/integrate-autobahnjava-and-spring/</guid>
				<description>&lt;p&gt;Are you an enthusiastic user of Spring and do you also want to benefit from the &lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;Web Application Messaging Protocol&lt;/a&gt;? Even though &lt;a href=&#34;https://felix-seifert.com/blog/wamp2spring-router-topics-procedures/&#34;&gt;wamp2spring&lt;/a&gt; mainly serves as a router, Spring users often want to create several microservices communicating with each other. A comfortable solution is using the WAMP library &lt;a href=&#34;https://felix-seifert.com/blog/autobahnjava-wamp-library-crossbar/&#34;&gt;Autobahn|Java&lt;/a&gt;. This article will describe how to combine Spring and Autobahn|Java.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-controller-for-wamp&#34;&gt;Create a Controller for WAMP&lt;/h2&gt;&#xA;&lt;p&gt;Autobahn|Java could be implemented as a controller. Therefore, the bean of Spring should be created with the annotation &lt;code&gt;@Controller&lt;/code&gt;. &lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;Topics and procedures&lt;/a&gt; could be handled exactly as described in the article about &lt;a href=&#34;https://felix-seifert.com/blog/autobahnjava-wamp-library-crossbar/&#34;&gt;Autobahn|Java&lt;/a&gt;. The methods implementing this should be registered as listeners. This could be achieved in the constructor of the controller.&lt;/p&gt;</description>
			</item>
			<item>
				<title>wamp2spring: Topics and Procedures</title>
				<link>https://felix-seifert.com/blog/wamp2spring-router-topics-procedures/</link>
				<pubDate>Fri, 02 Nov 2018 17:36:02 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/wamp2spring-router-topics-procedures/</guid>
				<description>&lt;figure&gt;&#xA;  &lt;img src=&#34;https://felix-seifert.com/images/posts/wamp2spring2publicationsprocedures-1_hu_9ed4f8e5b618946e.webp&#34;&#xA;       &#xA;       srcset=&#34;https://felix-seifert.com/images/posts/wamp2spring2publicationsprocedures-1_hu_4cc26896e091d48a.webp 640w, https://felix-seifert.com/images/posts/wamp2spring2publicationsprocedures-1_hu_9ed4f8e5b618946e.webp 1280w&#34;&#xA;       sizes=&#34;(min-width: 42rem) 40rem, 100vw&#34;&#xA;       width=&#34;1280&#34; height=&#34;550&#34;&#xA;       alt=&#34;wamp2spring serves as a WAMP router and could register remote procedures and publish on topics.&#34;&#xA;       loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;wamp2spring offers the option to serve as Web Application Messaging Protocol (WAMP) router publishing on topics and registering remote procedures. The article &lt;a href=&#34;https://felix-seifert.com/blog/wamp2spring-wamp-router/&#34;&gt;wamp2spring - Router for WAMP&lt;/a&gt; has already described how to set up a router with wamp2spring. In this article, we would learn how the router could publish on topics and register remote procedures.&#xA;Understanding RPC and Pub/Sub might be quite helpful for creating microservices communicating via WAMP. The different ways of communicating via the protocol are described in the article &lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;Web Application Messaging Protocol&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>wamp2spring - Router for WAMP</title>
				<link>https://felix-seifert.com/blog/wamp2spring-wamp-router/</link>
				<pubDate>Sun, 21 Oct 2018 14:57:56 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/wamp2spring-wamp-router/</guid>
				<description>&lt;figure&gt;&#xA;  &lt;img src=&#34;https://felix-seifert.com/images/posts/wamp2spring2_hu_166425c4cd6e44f4.webp&#34;&#xA;       &#xA;       srcset=&#34;https://felix-seifert.com/images/posts/wamp2spring2_hu_b90b0b0c8c686307.webp 640w, https://felix-seifert.com/images/posts/wamp2spring2_hu_166425c4cd6e44f4.webp 1280w&#34;&#xA;       sizes=&#34;(min-width: 42rem) 40rem, 100vw&#34;&#xA;       width=&#34;1280&#34; height=&#34;427&#34;&#xA;       alt=&#34;wamp2spring is a library used for setting up a WAMP router.&#34;&#xA;       loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;As I am a strong advocate of Spring Boot, I would present you with another way to set up a router for the Web Application Messaging Protocol (WAMP). This is based on the Java library &lt;a href=&#34;https://github.com/ralscha/wamp2spring&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;wamp2spring&lt;/a&gt; and Spring Boot (you could also use the Spring framework).&#xA;Besides setting up one or multiple WAMP clients (for example with &lt;a href=&#34;https://felix-seifert.com/blog/autobahnjava-wamp-library-crossbar/&#34;&gt;Autobahn|Java&lt;/a&gt;), a router is needed so that the clients could communicate with each other via WAMP. I have already described the idea in the article &lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;Web Application Messaging Protocol&lt;/a&gt;.&#xA;Even though there are multiple options for settings, it is quite convenient to set up a router with the default settings.&#xA;A wamp2spring router itself could register remote procedures, as well as publish on topics, which could be addressed by the wamp clients. This article would present a solution of a router that does not register or publish.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Autobahn|Java - WAMP Library of Crossbar.io</title>
				<link>https://felix-seifert.com/blog/autobahnjava-wamp-library-crossbar/</link>
				<pubDate>Sat, 13 Oct 2018 19:35:04 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/autobahnjava-wamp-library-crossbar/</guid>
				<description>&lt;figure&gt;&#xA;  &lt;img src=&#34;https://felix-seifert.com/images/posts/autobahn-java_hu_ed506ddbfb5517c2.webp&#34;&#xA;       &#xA;       srcset=&#34;https://felix-seifert.com/images/posts/autobahn-java_hu_5210dabd870c812d.webp 640w, https://felix-seifert.com/images/posts/autobahn-java_hu_ed506ddbfb5517c2.webp 1000w&#34;&#xA;       sizes=&#34;(min-width: 42rem) 40rem, 100vw&#34;&#xA;       width=&#34;1000&#34; height=&#34;333&#34;&#xA;       alt=&#34;This article describes how to implement a WAMP client using the library Autobahn|Java.&#34;&#xA;       loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;You have already learned &lt;a href=&#34;https://felix-seifert.com/blog/local-crossbar-router-wamp/&#34;&gt;how to set up a local Web Application Messaging Protocol (WAMP) router&lt;/a&gt;. This article would describe how to make the first step in programming a microservice in Java using the library Autobahn|Java and, thus, how to use a WAMP router.&lt;/p&gt;&#xA;&lt;h2 id=&#34;idea-of-autobahnjava&#34;&gt;Idea of Autobahn|Java&lt;/h2&gt;&#xA;&lt;p&gt;A WAMP network usually consists of a router and multiple clients. The clients are often microservices which are part of, at least, one bigger service. While being connected with the router, these microservices can communicate with each other. The &lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;article about WAMP&lt;/a&gt; describes the different ways of communicating via this protocol.&#xA;It is not relevant in which programming language the clients are being implemented, &lt;a href=&#34;https://github.com/crossbario/autobahn-java&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Autobahn|Java&lt;/a&gt; is the library of Crossbar.io to implement a client for a WAMP network specifically in Java. It is based on the framework &lt;a href=&#34;https://netty.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Netty&lt;/a&gt;, which is used for asynchronous programming.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Local Crossbar Router for WAMP</title>
				<link>https://felix-seifert.com/blog/local-crossbar-router-wamp/</link>
				<pubDate>Sun, 07 Oct 2018 12:55:32 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/local-crossbar-router-wamp/</guid>
				<description>&lt;figure&gt;&#xA;  &lt;img src=&#34;https://felix-seifert.com/images/posts/local-crossbar-router_hu_d31775b2aa25d83c.webp&#34;&#xA;       &#xA;       srcset=&#34;https://felix-seifert.com/images/posts/local-crossbar-router_hu_bb70c8e573f25c64.webp 640w, https://felix-seifert.com/images/posts/local-crossbar-router_hu_d31775b2aa25d83c.webp 1000w&#34;&#xA;       sizes=&#34;(min-width: 42rem) 40rem, 100vw&#34;&#xA;       width=&#34;1000&#34; height=&#34;333&#34;&#xA;       alt=&#34;For connecting several microservices, they have to be connected to a WAMP router.&#34;&#xA;       loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;When writing your own programme(s) using WAMP, they have to be connected to a WAMP router to be able to communicate with each other. There is a &lt;a href=&#34;https://wamp-proto.org/implementations/index.html#routers&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;whole bunch of implementations&lt;/a&gt; you could use for running a router. In this article I will describe how to set up a local Crossbar.io router.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-a-local-wamp-router&#34;&gt;Why a Local WAMP Router&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://felix-seifert.com/blog/web-application-messaging-protocol/&#34;&gt;Web Application Messaging Protocol (WAMP)&lt;/a&gt; is a protocol which could be used by many (micro-)services to communicate in a network. The programming languages used by the (micro-)services do not matter and they also do not have to know the address of each other. This means that they could be run anywhere as long as they are connected to the router, they only tell the router where they could be found. Therefore, the router is an integral part of a network using WAMP.&#xA;Crossbar.io runs a &lt;a href=&#34;https://crossbar.io/docs/Demo-Instance/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;demo instance&lt;/a&gt; of its router which could be accessed by anyone. This sounds easy but involves some setup of your internet connection. The easier way would be setting up your own local router.&#xA;In addition, you could use it for your own development when developing with others: When starting to code your own service from scratch while being connected to a remote router, others will probably not be able to access a stable version of your microservice. Therefore, you could run a simple mock-up for them remotely and develop the proper microservice locally.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Web Application Messaging Protocol</title>
				<link>https://felix-seifert.com/blog/web-application-messaging-protocol/</link>
				<pubDate>Fri, 05 Oct 2018 13:40:28 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/web-application-messaging-protocol/</guid>
				<description>&lt;p&gt;In the last Fiction2Science Hackathon, I learned to apply the &lt;a href=&#34;https://wamp-proto.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Web Application Messaging Protocol (WAMP)&lt;/a&gt; for communication of services in the cloud. In this article, I will describe the protocol a little bit more detailed and refer to the implementation of &lt;a href=&#34;https://crossbar.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Crossbar.io&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-idea-of-the-web-application-messaging-protocol-wamp&#34;&gt;The idea of the Web Application Messaging Protocol (WAMP)&lt;/h2&gt;&#xA;&lt;p&gt;Lots of people might know Representational State Transfer (REST) APIs. This architectural style sets a group of constraints that allow services on the web to communicate. A caller calls a certain URL and passes some information to the callee. Afterwards, the caller of the URL would receive an answer from the callee. As long as multiple callers know the URL of the API, it could be called by multiple services. However, multiple callees are not possible. This is known as a Remote Procedure Call (RPC).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fiction2Science: WAMP and Microservices</title>
				<link>https://felix-seifert.com/blog/fiction2science-wamp-microservices/</link>
				<pubDate>Fri, 05 Oct 2018 13:35:49 +0000</pubDate>
				<guid>https://felix-seifert.com/blog/fiction2science-wamp-microservices/</guid>
				<description>&lt;figure&gt;&#xA;  &lt;img src=&#34;https://felix-seifert.com/images/posts/fiction2science-hack-area_hu_3e46d0d44211610d.webp&#34;&#xA;       &#xA;       srcset=&#34;https://felix-seifert.com/images/posts/fiction2science-hack-area_hu_df3862ceeee65093.webp 640w, https://felix-seifert.com/images/posts/fiction2science-hack-area_hu_3e46d0d44211610d.webp 1000w&#34;&#xA;       sizes=&#34;(min-width: 42rem) 40rem, 100vw&#34;&#xA;       width=&#34;1000&#34; height=&#34;364&#34;&#xA;       alt=&#34;Part of the hack area of the Fiction2Science Hackathon of Continental in Regensburg&#34;&#xA;       fetchpriority=&#34;high&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Last weekend, I attended the hackathon Fiction2Science of Continental. I was assigned to the Cloud Challenge where we dealt with the communication between microservices in the cloud.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-cloud-challenge&#34;&gt;The Cloud Challenge&lt;/h2&gt;&#xA;&lt;p&gt;After the official welcome, we gathered at our challenge areas with around 20 people participating in each challenge (total of 7 different challenges). Each participant indicated what his focus area is (frontend, backend or design). Based on this indication, we autonomously formed teams of four to five participants. Eventually, our team consisted of only three participants: one person focusing on design and frontend development, one developer who engaged in both frontend and backend development and me. In the beginning, I dealt mainly with backend development but eventually, I was also responsible for the presentation.&#xA;At first, we learned the technique how our developed microservices would communicate. To help with this, we had a simple tutorial with some tasks that we had to solve. Then, we tried to understand how to use our programming language to publish and subscribe to topics and how to register remote procedures and call them. We continued to solve tasks to understand these required techniques a little bit more. Having learnt these techniques, we then developed our own service by combining several microservices.&#xA;Finally, we had to present our own service in front of a panel consisting of professional Software Engineers and Innovation Managers.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
