Skip to main content

Posts

Showing posts from June, 2014

Red Hat JBoss Fuse - RHTE Fuse and Camel Workshop

Last week was the Red Hat's Asia Pacific Technical Exchange event. It was a series of technical sharing session across Red Hat's product, from Red Hat Enterprise Platform solutions, Red Hat Openstack, Red Hat Openshift to Red Hat JBoss Middleware solutions.
Lots of interesting topics and ideas were shared during the session, many APAC Red Hatter has come up with interesting uses cases and their experiences with the products.

I had the honor to speak in 2 of the sessions, one is about IOT with AMQP and MQTT, which I have already talked about in my blog, the other one is a workshop.

This is a 1.5 hour workshop,

In this workshop we are first going to load data from H2 database to Red Hat JBoss Data Grid, provide a faster elastic memory grid cache for user to look up. 

Then we are going to build a web application with an interface for user to lookup data from the cache we have created. The communication will be asynchronized with WebSocket protocol with Fuse Camel route. In the rou…

Red Hat JBoss Fuse - RHTE Fuse and Camel 研討會習作

上個禮拜是紅帽的亞州區技術交流大會,在這個大會裡面大家會在Red Hat 的產品做技術的交流。從紅帽的企業Linux 平台,紅帽的雲端OpenStack, PaaS 平台 OpenShift,當然也有我們最愛的紅帽JBoss 中介軟體囉。 在大會的這幾天,有很多很有趣的創意用法,以及很多有趣的題目。很多紅帽的使用者,提出了很多有趣的使用方式,跟他們的經驗談。還滿有趣的,讓人受益非淺。總覺得自己是井底之蛙,看到大家超級有創意的方法,只能說,佩服佩服。

小妹剛好有榮幸講了其中的兩個題目,一個是關於利用AMQP 與 MQTT 間購物流網,這因為之前在部落格上已經寫了很多,就不多贅述。另一個就是個研討會的習作題。

這個習作如果從頭開始大概需要1.5個小時左右,

在這個習作裡,我們要先將資料從H2的資料庫裡面撈出來,放到JBoss Data Grid上,所以可以利用JBoss Data Grid 的高彈性的分散式記憶體網格暫存(Cache),讓使用者可以個快速,更有效率的取得資料。

然後我們要寫一個網頁程式,讓你有個界面可以輸入查詢的內容,然後到我們剛剛建的JDG Cache(快取) 查詢資料。與網頁的查詢是透過WebSoket 這種非同步式的通訊協定來交換資料。WebSocket 建立只要透過Fuse 的route 就可以很快速地建立Endpoint. 然後我們可以在Route上面看看在JBoss Data Grid 裡面是否有查詢到資料。我們可以用內容路由集成模式(哇咧,什麼爛翻譯,簡單來說,就是看內容決定要把資料往哪邊送的一種"系統整合Pattern") 決定要回傳什麼內容回前端頁面。
你可以在這裡把整個習作下載下來: https://github.com/weimeilin79/RHTEWorkShop 注意,文件在doc 檔案夾下.

Red Hat Fuse/A-MQ - Tips, Maven pom.xml for developing a FUSE Project

Red Hat JBoss A-MQ is a high performance and flexible messaging platform.

Red Hat JBoss Fuse is an open source Enterprise Service Bus (ESB) with an elastic footprint that supports integration beyond the data center. With Fuse, you will have Apache Camel to provide a full-featured, easy-to-use and intuitive framework for quicker integration solutions. The components supported in Fuse 6.1 are listed here!

To create connector to A-MQ or developing Camel  integration program in Fuse, we often use Maven to manage our project builds. But with many version of dependencies, how do I which one is right? Surprisingly not many people know about this, so I am going to put this in my blog. In case  the next time you are going to develop a Fuse or A-MQ project it will save a hell lot of time to resolve conflict package versions, finding the right version.

After creating your maven project through either loading archetype or a blank pom, there are few parts of in POM that needs to be changed, to ma…

Red Hat Fuse/A-MQ - 小技巧, 開發Fuse 專案時的 Maven pom.xml

Red Hat JBoss A-MQ 是高效能,高彈性的訊息平台
Red Hat JBoss Fuse 是開源的 Enterprise Service Bus (ESB) ,他最大的好處就是可以讓你擁有彈性的安裝大小,讓你可以整合跨越不同資料中心的服務語系統。 在 Fuse裡面, 還有 Apache Camel 提供一個功能齊全,容易使用和可以直接使用的框架,所以可以更快速的開發整合專案。Fuse 6.1所提供的元件在這裡!

在開發A-MQ 的程式或是Camel 的整合系統的時候,我們都會用Maven 來管理程式. 可是常常因為不同版本的關聯,造成程式間的衝突,這種問題超級羅生門,又難抓。介紹幾個小技巧,讓你可以更簡單的管理你的pom.xml, 讓你可以專注在開發上,不要為了設定一個頭兩個大。

不管你是透過archetype 或是乾脆起一個空白的maven專案,可以透過一些微幅的調整讓你管理起來更簡單,所以,第一件要解決得事情就是一堆的Artifact 的關聯版本,要一個一個的查FUSE 6.1 或是 AMQ 6.1 用到哪些實在是有夠麻煩的,所以我們只要在pom.xml 裡面增加 "dependencyManagement" 這個tag 就會自動地去管理,還有抓取我們需要的版本,是不是很棒!!

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.fuse.bom</groupId>
                <artifactId>jboss-fuse-parent</artifactId>
                <version>${jboss.fuse.bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        <…

My 100th Post!!! 我的第100篇文章!!

Ever since I started my blog, despite being very lazy and busy excuses for not update my blog frequently, it still slowly reached the 100th post! I started this blog just to record my learning result and thinking of sharing the latest JBoss middleware technology to Chinese readers in my region, then it became popular among friends, then to the world, till now I am publishing content in 2 languages, it's been a long road. Thanks Everyone! Go Go JBoss! JBoss Rocks!!!

自從有了這個Blog 以來,非常懶散地寫文章,也洋洋灑灑的到了100篇!從一開始只是想要紀錄自己學的東西順便介紹最新的JBoss 給中文的朋友看,到有些朋友來看我的Blog, 到很多外國人也來看我的Blog, 到現在還要弄英文版!真的是好長一段時間。謝謝大家!我會繼續加油的!加油JBoss!!!




Red Hat OpenShift xPaaS - Simple MQTT with OpenShift, Part Two, Simple client connecting to Broker on xPaaS

This demo will be divided into 2 parts, first part is about setting up the Messaging broker on OpenShift with MQTT Connector. Second part we are going to write a simple demo trying to connect to the broker via MQTT.

This is the 2nd part of the demo, we have previously setup a broker on Openshift, the PaaS offering from Red Hat. (see Part One). Now we have a broker running on the cloud ready to service. 

Apart from, MQTT is a very "lightweight " protocol. MQTT's nature act as a publish/subscribe messaging transport, so base on the scenario, it is more suitable for Topic, there will be no queue implementation for MQTT. 

This demo is a very simple producer and consumer, publishing messages through MQTT protocol. Using library of fusesource's mqtt-client. 

Before we start, please make sure you have successfully setup the broker on OpenShift. (see Part One). And we need to setup the environment in our local machine to work with xPaaS. Normally, the port are access on the PaaS…

Red Hat OpenShift xPaaS - 在OpenShift上簡單的MQTT Demo, (二), 簡單的客戶端程式連接xPaaS上的訊息Broker

這個demo 我把它分成兩個部分,第一部分是在OpenShift上面建立一個有MQTT通訊協定的訊息的Broker。然後在第二部分就是寫一支簡單的小程式去連接雲端上的Broker.

這是第二部分的demo, 我們之前已經在OpenShift 上面成功地建立了一個訊息Broker. OpenShift 是紅帽的PaaS (平台即服務). 所以現在我們已經有個在雲端上服務的Broker拉!

MQTT 除了是個羽量級的通訊協定外,因為MQTT本身是走publish/subscribe 的傳輸模式,所以基本上是走Topic, 不會用到queue. 
這個demo 是個非常簡單的訊息產生,以及接收的小程式。透過MQTT 傳輸訊息,使用fusesource 的MQTT-Client 程式庫。

在開始這個部分前,我一定要不厭其煩地講,請記得把OpenShift 上面的設定設定好(請見第一部)。之後,我們就可以在本地的環境上設定跟xPaaS的部分。一般來說,雲端上的port是要給雲端上的替統連接的,如果要讓開發者可以從自己本機連接Cloud 那邊提供的服務,那不是很好嗎?Openshift 有個功能叫做port-forward, 可以讓你不用去TMD設定一堆有的沒有的網路設定,就會自動把在雲端的服務mapping 到本地的port. 設定上一點都不困難。如下:

rhc port-forward $YOUR_CONTAINER_NAME 






蘋果的使用者,有的時候你要建立一下alias, 把你openshift 的IP 連接到本地的機器上。

sudo ifconfig lo0 alias $OPENSHIFT_IP

現在開始要執行demo, 請先把整個demo複製到本機端,請執行:

git clone https://github.com/weimeilin79/mqtt-demo.git

執行init.sh 設定. 這個時候他會要求你輸入 Broker URL, Fuse console 使用者與密碼. 

./init.sh
broker URL 就是MQTT 的  port (如果你是照著demo做的話內建是 1883 ), IP 會對應到你的本地 .所以應該是127.0.0.1.Fuse console 使用者與密碼都在先前建立broker時的就提供給你囉~