 Hi again, Red Hat Developers. This is Jason with the Red Hat Developer Program. I'm here at day two of Summit 2017 in the Dev Zone with Devin Phillips who's going to talk to us about Eclipse Vertex. Thanks for the introduction, Jason. So we all are trying to integrate applications together every day and sometimes it's easy, sometimes it's hard, but everybody's trying to move reactive and integrating reactive with your legacy applications is one of the more difficult tasks. You know, I'll say I'll just integrate them but it's never as easy as it sounds until you start looking at Vertex and the Event Bus bridges. We can actually tie together some really great integration tools using Vertex. Again, I'm Devin Phillips. I'm a Senior Consulting Engineer with Open Innovation Labs and I hope you'll join me for a minute to look at a little bit of code. So in Vertex we have the concept of an Event Bus Bridge. Vertex is a reactive platform or a reactive toolkit which means it uses message passing. This is what we call the Event Bus. We use it for message passing between different portions of the application and the Event Bus bridges allow us to connect that message passing Event Bus to other applications to other capabilities so we can use a TCP Event Bus Bridge to communicate with other applications outside of Vertex. We can use the SOC JS Event Bus Bridge which means we can extend our Event Bus all the way to the user's interface in the browser and we also have the Apache Camel Event Bus Bridge so we can tie our integration tools in Camel together with Vertex. And finally, you can even build your own Event Bus Bridge using the APIs available to you in Vertex. Let's look at the code real quick. What we have here is your basic Camel route. I'm using the Camel Twitter component to pull information about hashtags and and user names from Twitter about Summit, what's going on today. This is exactly the same way you would write these routes in Camel normally. And then here's the special Vertex bit. We have a Vertex vertical that creates a new default Camel context. We add our new route to that Camel context and we start the Camel context. And we use the Camel Event Bus Bridge in Vertex to tie the direct, the direct tweets endpoint to a Vertex address on the Event Bus stream. And we start that mapping. Next we set up a router for routing web application requests. We set up a SoxJS bridge for web sockets. And so we map a route for our Event Bus with a handler using the SoxJS handler with these bridge options. So what we're doing is we're saying these are the types of events we're going to allow to bridge out to the web socket to the front end. And we're only going to allow this one address, tweet that stream, and we're only allowing it outbound. We're not allowing anything back inbound. And then we set up another route to capture all of the other web-based paths for this application. We create an HTTP server that is fully reactive on port 8080, one line of code to build an HTTP server. Can't beat that, right? And then we set up an Event Bus consumer to log our messages. So down here in my console you actually see this application running. I'm going to start it over and you'll see that I'm using the Vertex Maven plug-in. So I'm compiling the application and I'm using Vertex Run. I press Enter. It starts up. A few seconds after it starts up you'll see that it connects to the Twitter streaming API. And there we go. We're going to start seeing tweets come through on the console. There they are. And if we switch up to here over to the UI and we hit refresh, we're actually going to see from the camel route streaming through Vertex out the Event Bus bridge to the web sockets in the UI, we'll see live tweets coming through in this UI. If you guys want to make it happen faster get on your phones and tweet something out it's going to show up on this screen in just a few moments. And of course the demo gods are not smiling today because nobody's tweeting at this very moment. Here I'll get my Twitter out and we'll post something. Actually here's a great plan. I'm going to post a picture of our attendees here. Awesome. I'm going to share that on Twitter with the Tag Red Hat Summit. And it should show up right here. Our H Summit Lightning Talks. And it's posting. It takes a few seconds for the picture to upload. But we should actually see that link and the tweet body show up here. Seriously. I just tried this like two seconds ago. There it is. You see my tweet just showed up. Or your tweets just showed up. So awesome. That's how easy it is to extend and integrate using Vertex. And I hope you get a chance to ask any questions you might want. We've got plenty of time. We can look at the code in more depth. I'll open the floor to you. So we're talking about extending the Vertex Event Bus. If you're familiar at all with reactive programming, the reactive manifesto, we're talking about applications that respond to events and usually message passing. So Vertex is just a library you can add to your Maven class path or your Gradle class path or whatever. And it gives you an event bus that is clusterable across nodes. And we'll talk about clustering this afternoon in a Lightning Talk. But it also has event bus bridges. And one of them that we're using here is a camel bridge that bridges to Apache Camel. We're also using a web socket bridge that extends the event bus out to the browser. So we're using the Twitter component from camel. As you can see right here, we've got a small camel route that filters out bodies that aren't null or that are null. It filters out. Make sure it's a status class. Make sure that we're not showing retweets. And it directs out to the camel endpoint of direct colon tweets. Down here in the Vertex vertical start method, we create the camel context, we add that new route, and we start the camel context. We use the camel bridge component from Vertex to connect that camel endpoint to a Vertex Event Bus address. Then we create a web router in Vertex that allows us to map URIs to handlers. So in this case, this is the web socket handler. And then down here we have a static content handler for serving up HTML, JavaScript, images, things like that. We create an HTTP server and start it listening on port 8080. And we tell it to use the router to direct our requests. And then we have another Event Bus consumer that logs our messages. And so you can see those message logs coming down through here. And you can see those tweets as they show up live in the web browser through that web socket Event Bus bridge. You can also create your own Event Bus bridges using whatever protocols, GRPC, it's open. There's a really nice interface for building your own Event Bus bridges however you would like. Any other questions? I'm sorry? The development environment, the question was what's the development environment I'm using? This is IntelliJ. One thing that I will add, and Clement Escoffier will be having a full-length session tomorrow about Vertex, is Vertex is just a library. You can integrate it with any existing Java application without rewriting the code. It's very unbiased, it's very unopinionated. You can use it to start breaking out your applications into microservices without rewriting. And it's extremely fast, it constantly sits on the tech and power benchmark in the top 10. Any other questions? All right, thank you very much for your time. And if you want to catch me afterwards, I'll be around for more in-depth questions. Have a great afternoon and enjoy summit.