日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Camel从WildFly 8向WebLogic 12发送JMS消息

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Camel从WildFly 8向WebLogic 12发送JMS消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統集成是一個很好的挑戰。 特別是當您在尋找通信標準和可靠的解決方案時。 在當今的微服務世界中,每個人都在談論REST服務和基于http的協議。 實際上,對于大多數企業項目來說,這往往是遠遠不夠的,而這些項目通常具有更復雜的要求。 合理的解決方案是基于Java消息服務的集成。 而且,盡管我們不再關注集中式基礎架構和ESB,但我們希望為定義的服務提供基于點對點的集成。 讓我們看看我們是否可以使其工作并在JBoss WildFly和Oracle WebLogic Server之間發送消息。

業務案例–從Java EE到微服務

但我想先退一步:為什么要有人? 我認為,這種情況背后的主要動機之一是遷移路徑緩慢。 從單一的單一平臺應用程序一直到最后,我們希望具有足夠的靈活性以將那些大型安裝中的單個服務封裝起來,并使它們作為服務可用。 假設這是可能的,并且舊版應用程序具有不錯的設計。 或者我們想提高個性化服務,從技術角度來說。 在這個特定的示例中,我們迫不及待地想將Java EE 7功能引入我們的應用程序,而WebLogic仍然主要停留在EE 6上。我們可以使用REST服務甚至WebServices來做到這一點,但我們可能還需要更多。 這就是JMS規范的來源。

WildFly中的Oracle JMS客戶端庫

為了在兩個不同的服務器之間發送消息,您需要將各個客戶端庫集成到發送端。 對于WebLogic,這是WebLogic JMS瘦客戶端 (wljmsclient.jar)。 與WebLogic Install或Full客戶端相比,使用較小的客戶端資源提供了Java EE和WebLogic JMS功能,而與Thin T3客戶端相比,其提供的客戶端資源也較小。 實際上,它包含Java EE JMS API和實現,它們將直接與WildFly提供的實現發生沖突。 要使用它們,我們必須將它們打包為一個模塊,并在HornetQ中配置一個JMS Bridge來使用它。 首先是添加新模塊。 將文件夾更改為wildfly-8.2.0.Final \ modules \ system \ layers \ base并創建一個新的文件夾結構:custom \ oracle \ weblogic \ main在其下方。 從此處的%MW_HOME%\ server \ lib文件夾復制wlthint3client.jar。 現在,您必須添加一個模塊描述符文件,module.xml:

<module xmlns="urn:jboss:module:2.0" name="custom.oracle.weblogic"><resources><resource-root path="wlthint3client.jar"><filter><exclude-set><path name="javax.ejb"/><path name="javax.ejb.spi"/><path name="javax.transaction"/><path name="javax.jms"/><path name="javax.xml"/><path name="javax.xml.stream"/></exclude-set></filter></resource-root></resources><dependencies><module name="javax.api"/><module name="sun.jdk" export="false" services="import"><exports><include-set><path name="sun/security/acl"/><path name="META-INF/services"/></include-set></exports></module><module name="com.sun.xml.bind" /><module name="org.omg.api"/><module name="javax.ejb.api" export="false" ? /><module name="javax.transaction.api" ?export="false" /><module name="javax.jms.api" ?export="false" /><module name="javax.xml.stream.api" export="false" ?/><module name="org.picketbox" optional="true"/><module name="javax.servlet.api" optional="true"/><module name="org.jboss.logging" optional="true"/><module name="org.jboss.as.web" optional="true"/><module name="org.jboss.as.ejb3" optional="true"/><module name="org.hornetq" /></dependencies> </module>

該文件定義了所有必需的資源和依賴項以及相關的排除項。 如果完成了,我們最終需要消息橋。

HornetQ JMS消息橋

JMS橋的功能是使用來自源JMS目標的消息,并將其發送到目標JMS目標。 通常,源或目標目標位于不同的服務器上。 只要它們兼容JMS 1.1,該橋接器還可用于橋接來自其他非HornetQ JMS服務器的消息。 打開standalone-full.xml并將以下配置添加到消息傳遞子系統:

<jms-bridge name="wls-bridge" module="custom.oracle.weblogic"><source><connection-factory name="java:/ConnectionFactory"/><destination name="java:/jms/sourceQ"/></source><target><connection-factory name="jms/WFMessagesCF"/><destination name="jms/WFMessages"/><context><property key="java.naming.factory.initial"value="weblogic.jndi.WLInitialContextFactory"/><property key="java.naming.provider.url"?value="t3://127.0.0.1:7001"/></context></target><quality-of-service>AT_MOST_ONCE</quality-of-service><failure-retry-interval>2000</failure-retry-interval><max-retries>10</max-retries><max-batch-size>500</max-batch-size><max-batch-time>500</max-batch-time><add-messageID-in-header>true</add-messageID-in-header></jms-bridge>

如您所見,它直接引用模塊,并具有源和目標定義。 源是在消息收發子系統中定義的WildFly本地消息隊列:

<jms-queue name="sourceQ"><entry name="java:/jms/sourceQ"/></jms-queue>

而目標是在WebLogic Server中定義的遠程隊列以及連接工廠。 我假設您知道該怎么做,否則請參閱本文檔 。 就是這樣。 現在,我們需要向本地隊列發送一條消息,而該消息將通過網橋發送到WebLogic隊列。

測試橋–使用駱駝

將消息驅動的bean部署到WebLogic(是的,您必須將其作為ejb jar打包到耳朵中,所有這些)。 這個特定的示例只是將消息文本轉儲到記錄器中。

@MessageDriven(mappedName = "jms/WFMessages", activationConfig = {@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })public class LogMessageBean implements MessageListener {private final static Logger LOGGER = Logger.getLogger(LogMessageBean.class.getName());public LogMessageBean() {}@Overridepublic void onMessage(Message message) {TextMessage text = (TextMessage) message;try {LOGGER.log(Level.INFO, text.getText());} catch (JMSException jmxe) {LOGGER.log(Level.SEVERE, jmxe.getMessage());}} }

現在,我們需要WildFly服務器上的生產者。 這樣做,我實際上是在使用WildFly-Camel JMS集成 。

@Startup @ApplicationScoped @ContextName("jms-camel-context") public class JMSRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {// Initial Context LookupContext ic = new InitialContext();ConnectionFactory cf = (ConnectionFactory) ic.lookup("/ConnectionFactory");// Create the JMS ComponentJmsComponent component = new JmsComponent();component.setConnectionFactory(cf);getContext().addComponent("jms", component);// Build A JSON GreetingJsonObject text = Json.createObjectBuilder().add("Greeting", "From WildFly 8").build();// Send a Message from timer to Queuefrom("timer://sendJMSMessage?fixedRate=true.=10000").transform(constant(text.toString())).to("jms:queue:sourceQ").log("JMS Message sent");} }

這就是整個魔術。 計時器將JSON文本消息發送到本地隊列,該消息將橋接到WebLogic。

更多提示

如果要在沒有網橋的情況下測試WebLogic隊列,則必須將wljmsclient包含到您的項目中。 由于這在Maven存儲庫(AFAIK)中不可用,因此您可以簡單地在本地安裝它:

mvn install:install-file -Dfile=%MW_HOME%/wlserver/server/lib/wlthint3client.jar -DgeneratePom=true -DgroupId=custom.com.oracle -DartifactId=wlthint3client -Dversion=12.1.3 -Dpackaging=jar

另一個重要的事情是,如果您嘗試在橋以外的其他范圍內使用自定義模塊,則會在WildFly上遇到類加載問題。 因此,請密切注意,不要在其他地方使用它。

該網橋配置了較大的故障重試間隔和最大重試次數。 這是一種解決方法。 如果WildFly啟動太快,并且網橋在實際配置隊列之前嘗試訪問本地sourceQ,則會導致異常。

  • 在我的GitHub帳戶中找到完整的源代碼 。

翻譯自: https://www.javacodegeeks.com/2015/07/sending-jms-messages-from-wildfly-8-to-weblogic-12-with-camel.html

總結

以上是生活随笔為你收集整理的使用Camel从WildFly 8向WebLogic 12发送JMS消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91在线最新 | 91久久精品夜夜躁日日躁欧美 | 黑白配在线观看免费观看 | 91精品在线免费 | 九九九在线观看 | 亚洲午夜影视 | 欧美一区二区三区大屁股撅起来 | 久久久久久天堂 | 国产激情久久久久久熟女老人av | 亚洲中文字幕无码一区二区三区 | 67194成人 | 神马影院午夜伦理片 | 岛国av在线免费观看 | 男人操女人免费网站 | av自拍网 | 欧美 日韩 国产 精品 | 老司机av影院 | 爽爽淫人 | 国产成人无码久久久精品天美传媒 | 免费看成年人视频 | 一区二区三区免费在线观看视频 | 天天综合日韩 | 麻豆偷拍 | 日本三级中文字幕 | 99热国产在线观看 | 免费在线观看黄 | 国产精品久久久久久久久久妞妞 | 丁香婷婷激情 | 国内黄色片 | a爱视频 | 91国自产精品中文字幕亚洲 | 国产日韩欧美中文字幕 | 国产小视频网站 | 天天操天天插天天射 | 无码日韩人妻精品久久蜜桃 | 久久精品视屏 | 亚洲人成一区 | 国产二级视频 | 欧美xxx视频 | 91精品系列 | 欧美一级网站 | 国产乡下妇女三片 | 伊人久久视频 | 日韩电影在线观看一区二区 | 国产色视频在线 | 亚洲国产欧美日韩 | 羞羞答答一区 | 日韩无砖 | 国产色中色| 国产香蕉av | 精品成人免费视频 | 老司机激情影院 | 不卡久久| 亚洲精品无码久久久久 | 久久久久久网址 | 美女一区二区三区四区 | 久久国产乱子伦精品 | 我爱我色成人网 | 无码人妻精品一区二区三区夜夜嗨 | 特级丰满少妇一级aaaa爱毛片 | 91视频免费在线 | 精品久久久久久国产 | 精东传媒在线观看 | 桃谷绘里香在线播放 | 国产精品女优 | 奇米影视第四色777 波多野结衣一区二区三区免费视频 | 午夜视频福利网站 | 欧美一区二区大片 | 日韩首页| 女人叫床很黄很污句子 | 中文在线资源 | 色爱AV综合网国产精品 | 91成人免费在线 | 真人毛片视频 | 国产熟女一区二区三区四区 | 亚洲三级黄色片 | 日夜夜操 | 在线看的av | 国产精品福利片 | 天天干夜夜看 | 黄网av| 国产黄a三级三级三级看三级男男 | 中文字幕日韩欧美一区二区 | 99色| 国产顶级毛片 | 99久免费精品视频在线观78 | 国产视频网 | 日韩精品电影一区二区 | 国产精品一区二区人妻喷水 | 91pao| 日韩在线中文字幕 | 一个色在线 | 免费黄片毛片 | 中文一区二区 | 露胸app | 重囗味sm一区二区三区 | 777精品伊人久久久久大香线蕉 | 欧美福利社| 日本在线视频免费 |