Skip to main content

Red Hat JBoss Fuse - 設定Camel 送收 ActiveMQ queue 訊息

測試Fuse 6.1 Beta, 這版多了新的GUI 功能,真的漂釀好多喔。佩服這些寫GUI的開發者哩~ 前端總是最難搞的~

安裝有3個部分,

A. Fuse
B. FuseIDE 開發工具
C. Maven

好了,廢話不多說,先來安裝JBoss Fuse 6.1. 老樣子,到Red Hat官網上,下載zip檔。


下載完之後,也是老樣子,直接解壓縮就完成安裝了。(很多人跟我要Best Practice, 好吧,現在就來個Best Practice,Fuse 或是任何JBoss 安裝的路徑請不要有空格,或特殊字元。)


安裝後,到FUSE 安裝路徑下etc目錄下的 users.properties 中,
把 admin 的帳號密碼打開:(把前面的#拿掉)



因為這次還需要用Camel開發,所以我們也需要開發工具,Fuse 有自己的開發工具,叫做FuseIDE, 一樣,請到Red Hat 的官網上下載吧。

請選擇你電腦的作業系統下載噢!下載後點擊兩下,直接安裝就可以了。(請參考FuseIDE 安裝,基本上就是按下一步,下一步而已。)

還有一個必須要安裝的就是MAVEN, 請到Apache Maven 的官網上去下載安裝囉。(http://maven.apache.org/) 至於為什麼需要,待會兒再看。

這次要做兩件事情,

A. 在JBoss Fuse 裡面建立一個Fabric 的管理環境,啓動一個Broker (主從備份),所以等一下可以從Camel 設定把訊息寫進去。然後再建立一個Container 叫做demo 來放這次建立的Camel 專案。

B. 建立一個Camel 專案,這個專案有兩個Route (執行路徑) 設定。一個是每五分鐘就把訊息內容寫入叫做demo 的 Queue裡面。另一個是去聽 demo 的 Queue 的訊息,把接收到的訊息印出來。


1. 先把JBoss Fuse 的環境搞定,到剛剛解壓縮Fuse的目錄下的 bin 下方,執行 ./fuse (Windows 請執行 fuse.bat)
然後老樣子,執行
JBossFuse:karaf@root> fabric:create --zookeeper-password admin 建立一個Fabric 管理環境。


2. 然後我們直接進入 JBoss Fuse 6.1 全新的GUI管理畫面,
htttp://localhost:8181 ,使用 admin/admin 登入。登入後,到左上角,選擇Fabric.




3. 點選上方選單的MQ, 這時可以看到內建的Broker, 可是我們這次不是要用內建的,我們要用自己建的,所以請點選右邊左方的 +Broker.

幫我們建立的broker 命名: demoBroker, 選擇主從的備份關係。 (以後有機會寫AMQ 的時候再來) 按下右邊的Create Broker.

這時候demoBroker, 會有紅色,因為我們只有建立Profile, 還沒有真正的容器(Container) 去執行它。按下 0 它就會帶你到建立container 的頁面。


所以這裡也是很直接,幫container 取個名字,BKCont, 因為是主從關係,所以需要兩個獨立的jvm 也就是兩個container. 按下Create And Start Container 就完成了。


完成後,看到兩個BKCont1 與 BKCont2 。


先確認一下queue 的位置,要看每個Container 的內容,只要按下最右邊的喇叭形狀的東西,就會跳出來了。


按下ActiveMQ, demoBroker, 左邊就會出現連接的tcp 的Open wire URL. 還有Port.
這個要記起來,等下會用到。

以上可以先離開一下JBoss Fuse.


4. 開始建立Camel 的專案。首先啓動JBoss Fuse IDE. 啓動之後建立一個Fuse Project.


FuseIDE 的其中一個好處,就是幫你做好很多Sample, 所以你不用自己去寫pom.xml,去設定dependency 等等的.. 簡單多拉!下面就跟一般的maven 一樣,設定

Group ID: org.blogdemo 
Artifact ID: camel-amq


這次不要用內建的範例,請把它刪掉。


刪掉之後,到src/main/resources/META-INF/spring 下按滑鼠左鍵,建立一個Camel XML 檔案。


按下Finish 完成。


5. 先建立一個讓Camel 與剛剛建立的ActiveMQ 位置的連結。 按下剛剛產生的camelContext.xml 的source tab, 加上BrokerURL 的位置,還有登入的ID 與 password.



  
  
  
 


6.設定第一個Route

選擇 Endpoint 然後把它拉到畫布上。


使用Camel 其中的一個元件,timer, 這次設定每五秒鐘啓動一次。
相關設定,可以去看Camel 的網頁:Timer


再拉個Log 到畫布上

點選log 後,在下方的Properties 裡面,寫個log "Setting Message Body content"


拉選Transformation 下的SetBody, 然後他媽的,一定要寫中文的內容。因為我們是驕傲滴台灣人!(怎麼會突然想罵髒話,因為我寫到快花轟了... :p) 恩.. 然後在下方的Properties 就很弱的寫一個 "大家好" ... 哈哈哈..


再拉一個log 來記錄我們要寫進queue裡面的內容。在下面的Properties 裡面設定

printing body => ${body}


真正的把msg 送出去queue裡面。把Endpoint 拉到畫布中,在下方的Properties / Detail 中的Url 設定為 activemq:queue:demo



activemq 覺得很眼熟吧? 記得剛剛我們在xml 一開始設定的bean 嗎?它就會連到我們剛剛指定的broker 裡面。

接下來就是把所有的東西串連起來囉~ 點選每一個元件,選擇左上方的小箭頭,然後拖拉到下一個元件裡面。

完成,記得儲存啊!


7. 接下來,直接跑跑看囉。在建立的xml 檔案上,按下滑鼠左鍵,選擇Run AS 下的Local Camel Context (Without tests)


你就會看到Log 上跑的內容。


整個XML內容如下: (注意,你的port 可能跟我不一樣噢!)



 
  
  
  
 
  
    
        
        
        
            大家好
        
        
        
    





8. 設定第二個Route ,這一個比較簡單,基本上就是去聽 demo 的queue ,有東西進來就印log.


到src/main/resources/META-INF/spring 下按滑鼠左鍵,建立一個Camel XML 檔案。


命名為: camelListener.xml 


與之前一樣,按下剛剛產生的camelListener.xml 的source tab, 加上BrokerURL 的位置,還有登入的ID 與 password. 因為我們要去聽Broker 的queue 裡面的內容。


選擇 Endpoint 然後把它拉到畫布上,在下方的Properties / Detail 中的Url 設定為 activemq:queue:demo 所以它會去demo 的queue 聽訊息內容。


拉一個log 來記錄從queue裡面收到的內容。在下面的Properties 裡面設定
msg body => ${body}



把兩個元件串連起來~ 選擇左上方的小箭頭,然後拖拉到log 的元件裡面。


完成,記得儲存。


整個xml 檔案如下:


  
  
  
 
  
    
        
        
    






9. camelListner.xml 檔案上,按下滑鼠左鍵,選擇Run AS 下的Local Camel Context (Without tests)

就會看到Log 上跑的內容。


以上完成Camel 專案的建置了。

10. 接下來,就要把Camel專案部署到我們的Fabric 環境上了。我們要用maven 建置,然後透過maven 部署到Fabric 上的Profile 上。
(如果你不熟Fabric, 請到這裡去研究一下吧。)


這次要把camel 的專案安裝成OSGi Bundle, 所以,要稍微修改一下專案的pom.xml,
請下面這個pom.xml 覆蓋在你的專案的pom.xml



  4.0.0

  org.blogdemo
  camel-amq
  bundle
  1.0.0-SNAPSHOT

  A Camel Spring Route
  http://www.myorganization.org

  
    UTF-8
    UTF-8
  

  
    
      release.fusesource.org
      FuseSource Release Repository
      http://repo.fusesource.com/nexus/content/repositories/releases
      
        false
      
      
        true
      
    
    
      snapshot.fusesource.org
      FuseSource Snapshot Repository
      http://repo.fusesource.com/nexus/content/repositories/snapshots
      
        true
      
      
        false
      
    
  

  
    
      release.fusesource.org
      FuseSource Release Repository
      http://repo.fusesource.com/nexus/content/repositories/releases
      
        false
      
      
        true
      
    
    
      snapshot.fusesource.org
      FuseSource Snapshot Repository
      http://repo.fusesource.com/nexus/content/repositories/snapshots
      
        true
      
      
        false
      
      
  

  
    
      org.apache.camel
      camel-core
      2.10.0.fuse-71-047
    
    
      org.apache.camel
      camel-spring
      2.10.0.fuse-71-047
    

    
    
      org.slf4j
      slf4j-api
      1.6.6
    
    
      org.slf4j
      slf4j-log4j12
      1.6.6
    
    
      log4j
      log4j
      1.2.17
    

    
    
      org.apache.camel
      camel-test-spring
      2.10.0.fuse-71-047
      test
    

 
    
      org.apache.activemq
      activemq-core
      5.7.0.fuse-71-047
    
    
      org.apache.activemq
      activemq-camel
      5.7.0.fuse-71-047
    
  

  
    install

    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        2.5.1
        
          1.6
          1.6
        
      
      
        org.apache.maven.plugins
        maven-resources-plugin
        2.4.3
        
          UTF-8
        
      

      
      
        org.apache.camel
        camel-maven-plugin
        2.10.0.fuse-71-047
      
      
  org.apache.felix
  maven-bundle-plugin
  true
  2.4.0
  
   
    ${project.groupId}.${project.artifactId}
    ${project.name}
    ${project.version}
   
  
 
    
  

  




其實主要改的地方,只有

<packaging>bundle</packaging

還有

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <extensions>true</extensions>
   <version>2.4.0</version>
   <configuration>
      <instructions>
         <Bundle-SymbolicName>
            ${project.groupId}.${project.artifactId}
         </Bundle-SymbolicName>
         <Bundle-Name>${project.name}</Bundle-Name>
         <Bundle-Version>${project.version}</Bundle-Version>
         </instructions>
      </configuration>
</plugin>

我們到workspace 下,執行 mvn clean install




11. 回到 Fuse 的執行畫面,

建立一個Profile 叫做 blogdemoP
JBossFuse:karaf@root> profile-create blogdemoP

然後透過maven 把剛剛建的camel-amq 專案部署到 Profile 上。

JBossFuse:karaf@root> profile-edit -b mvn:org.blogdemo/camel-amq/1.0.0-SNAPSHOT blogdemoP

12. 我們要透過GUI的畫面,建立一個容器 (Container) 然後把我們剛剛建的 Profile 安裝在container 上。選擇 Container 下的右上方按下 +Create

 給Container 一個名字: demo,在左下方,安裝full 的 Profile.

在左邊下方,安裝剛剛建立的blogdemoP Profile, 然後按下左上方的 "Create And Start Container"


稍微等一下,就會看到demo 正常啟動,要去看log, 請到右邊的喇叭圖示,

跳出來的視窗,在最上方選擇Logs, 就可以看到兩個route 的log.


以上。就完成了部署。

同場加映,太酷的GUI 內容:

一樣到剛剛的demo container 裡,選擇上方的Camel , 左邊選單的Routes -> Attributes 就會出現每個Camel Route 被執行的次數。

 如果要更細的看內容,再去選擇要看的route ,就可以看到每個元件被執行的時間。

 還有Camel-1 上,選擇Diagram, 它就會顯示所有End point, 還有 route 等等之間的關係。

點選每個Route, 就可以在左手邊看到細項。



還有ActiveMQ 也可以看到queue 的內容。選擇Master Broker 的左邊細項圖示。

點選Queue 的 Attribute 就可以看到每個queue 的現在狀況拉。

以上。這篇做好久喔!

Comments

Popular posts from this blog

Fuse Integration Service - Setup JBDS and create first quickstart application

Before we go and start creating our first application, I want to show you how to setup your JBoss Developer Studio, create a small application from the quickstart example and then running it on Fuse Integration Service.

I am using JBoss Developer Studio version 9, you can find it here.
After download the

jboss-devstudio-9.0.0.GA-installer-eap.jar
double-click it, and start installing with default values.

After successful installation, we will need install the plugins for Fuse, on JBoss Central view, select software update, select enable early access.


And select JBoss Fuse Development for the plugin,


Click on install, and we are all set to go!

First thing first, we want to create a Fuse project to deploy on the base of Fuse Integration Service, which is OpenShift. If you have not installed it, please go back to my previous post for instructions. So on your JBDS, right click and start creating the project. Select new, maven project, if you have installed the plugin correctly, you should …

RHTE - Supercharge your integration services

Red Hat Tech Exchange has taken place in Vietnam, Ho Chi Minh city two weeks ago, it is a great event held by Red Hat in Asia Pacific Region. It is open to all Red Hat partners who are interested in learning what Red Hat is doing recently, see what the trend of the open source world, basically it is a great event to share your knowledge and experience, to meet other enthusiastic people.

I am very fortunate to talk in this great event, to talk about the things I have been working on and even discuss it with many. Also got lots of great ideas too. So here are the slide.

My first talk was with Thomas Qvarnström about how to handle large size data in JBoss Fuse and how JBoss Data Grid can help in the situation.

Here is the agenda of the talk, we will be talk about this in the up coming webinar on 24th Sept.

Integration often involves storing, retrieving, and transforming data. Using a traditional database in your integration is likely to becomes a bottleneck that is expensive and hard to …

Red Hat JBoss Fuse/A-MQ - Fuse and A-MQ Version 6.3 GA is released!

Fuse and A-MQ 6.3 GA has just went out. Maybe, you would think this is just only a minor version release why should I care? Hold your thoughts on that! Because they have done a lot of improvements and also added many new features into this release.

Besides various bug fixes and making sure Fuse Fabric is much more stable. There are two major change in this version update:

New Tooling in JBoss Developer Studio (JBDS) 9.1 GA. Newer Apache Camel version – Camel v2.17. I was really impressed by the work put in to make developing Camel application much simpler. First is the installation of tooling itself. Now it has a all-in-one installer so you don't need to worry about which plugins you need to check. See the videos below to see the new "Getting Started" of Fuse 6.3.



And If you notice from the above video, the presentation of camel route in JBDS has also updated. It fixed some of the miss representation of logic and making it easier to read.

Old Camel Route
New Camel Route
On …