使用Apache ActiveMQ的JMS開發基礎

去年是我嘗試JMS的時候。 背后的想法和概念讓我有些困惑,但是當我知道它的用途后,我很快就掌握了它。 在本文中,我將展示使用Apache ActiveMQ作為后端使用Java開發簡單的生產者/消費者的基礎。

讓我們首先從概念開始,這是一個簡單的JMS架構:

必須首先創建連接工廠才能連接到目標。 客戶端(應用程序)必須創建一個連接實例并創建一個生產者類,以便它可以創建將發送到目的地的消息。 消息使用者類(外部應用程序)必須訂閱目標,才能使用生產者產生的消息。

考慮一下這種情況(如果您緊急需要示例,請跳過此部分):您想開發一個問答應用程序,希望它對用戶非常有效。 您不希望用戶登錄并登錄網站來檢查問題和答案,而是希望在遇到任何問題或找到新答案時盡快通知他們。 然后,您想到了放置桌面應用程序并放置通知欄的方式,這樣,將通知用戶,他們可以答復或檢查新存儲的數據。

顯然,您不希望用戶單擊“刷新”只是為了檢查新數據,您不允許這樣做嗎? 那對于使用它的任何人來說都是低效率的。 輪詢怎么樣? 使用goog方法,但這可能會分配過多的資源。 您想要的是每次將新數據推入數據庫時??向客戶端創建一個自動拉取請求。 執行客戶端推送的服務器。

像這樣思考:將消息引發到數據庫后,同一條消息將引發到消息目標(主題或隊列)上,并將其發送給所有訂閱目標的客戶端。 :) 就像訂閱時事通訊一樣,您作為用戶已訂閱,并且每次發送時事通訊時,所有用戶都將收到時事通訊電子郵件。

這只是JMS在您的開發方案中可以解決的眾多可能性之一。 顯然,使用此功能,您可以想象它有多有用。
那么,我如何顯示一個小例子來說明如何做到這一點呢?,只需按照以下說明進行操作,然后自己檢查一下即可:

首先,下載并設置ActiveMQ( http://activemq.apache.org/ )-“ Apache ActiveMQ ?是最流行,功能最強大的開源消息傳遞和集成模式服務器。 ” –根據其網站。 實際上,除了強大而開放的源代碼之外,我不會爭辯說,它是迄今為止我使用過的最輕便的消息傳遞服務器(我已經使用WeblogicMQ并嘗試了JBossMQ)。

下載源代碼后,將其放在您喜歡的目錄中并運行activemq命令。 該文件位于<activemq root> / bin。

運行ActiveMQ之后,您現在應該可以訪問MQ Admin Console網站。 在這里可以看到MQ的所有指標,包括使用者,主題,隊列,消息等。默認情況下,它使用端口8161(http:// localhost:8161 /)。

如果您可以看到上面的站點,則意味著您已經成功啟動了Apache ActiveMQ! 現在開始發展我們的客戶。 在本文中,我將使用Eclipse開發代碼,但是您可以使用自己喜歡的任何IDE。

打開Eclipse并創建一個新的Java項目。
獲取并將activemq-all- <version> .jar文件導入您的項目。 請注意,這是重要的一步,因為我們將使用jar中的類來訪問MQ管理服務。 培養生產者:–生產者將是發送實際消息的人。

制片人
開發消費者–消費者將是接收生產者創建的消息的人。

消費者
在此處下載完整項目。

請享用!

參考: JCG合作伙伴 Alvin Reyes 使用Apache ActiveMQ的JMS開發基礎 ? 在Alvin“ Jay” Reyes博客上 。


翻譯自: https://www.javacodegeeks.com/2012/03/jms-development-fundamentals-using.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vijos p1460——拉力賽

描述 車展結束后&#xff0c;游樂園決定舉辦一次盛大的山道拉力賽&#xff0c;平平和韻韻自然也要來參加大賽。 賽場上共有n個連通的計時點&#xff0c;n-1條賽道&#xff08;構成了一棵樹&#xff09;。每個計時點的高度都不相同&#xff08;父結點的高度必然大于子結點&#…

mysql acid_Mysql中ACID的原理

原子性 (Atomicity)原子性是指一個事務是一個不可分割的工作單位&#xff0c;其中的操作要么都做&#xff0c;要么都不做。隔離性 (Isolation)隔離性是指多個事務并發執行的時候&#xff0c;事務內部的操作與其他事務是隔離的&#xff0c;并發執行的各個事務之間不能互相干擾…

MongoDB 自動刪除集合中過期的數據——TTL索引

簡介 ? TTL (Time To Live, 有生命周期的) 索引是特殊單字段索引&#xff0c;MongoDB可以用來在一定時間后自動從集合中刪除文檔的特殊索引。 這對于某些類型的數據非常好&#xff0c;例如機器生成的事件數據&#xff0c;日志和會話信息&#xff0c;這些信息只需要在數據庫中…

PLSQL 經常自動斷開失去連接的解決過程

問題背景&#xff1a; 情況是這樣的&#xff0c;很多開發同事的PLSQL上班時間開著8個小時&#xff0c;有時候他們出去抽煙后或者中午吃完飯&#xff0c;回來在PLSQL上面執行就報錯無響應&#xff0c;然后卡住了半天動彈不了&#xff0c;非得重新登錄plsql才生效&#xff0c;我猜…

使用Cobertura,JUnit,HSQLDB,JPA涵蓋您的測試

你好&#xff01;你好嗎&#xff1f; 今天讓我們談談一個非常有用的工具&#xff0c;名為“ Cobertura”。 該框架與我們在另一篇文章中看到的Emma框架具有相同的功能。 Cobertura和Emma之間的主要區別在于Cobertura顯示帶有圖形的簡歷頁面。 如果要查看有關該主題的其他主題…

fedora mysql gui_fedora8安裝 mysql++失敗!!裝了一個晚上沒搞定!!傷心阿!

fedora8安裝 mysql失敗&#xff01;&#xff01;裝了一個晚上沒搞定&#xff01;&#xff01;傷心阿&#xff01;發布時間:2008-02-24 05:15:27來源:紅聯作者:lygzx[rootF8 mysql-3.0.0]# ./configure --w/usr/lib/mysqlconfigure: error: unrecognized option: --w/usr/lib/my…

MongoDB 數組類型查詢 —— $elemMatch 操作符

描述 $elemMatch 數組查詢操作用于查詢數組值中至少有一個能完全匹配所有的查詢條件的文檔。語法格式如下&#xff1a; { <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一個查詢條件就沒必要使用 $elemMatch。 限制 不能指定 $where 查…

MVC4 Action 方法的執行

1. ActionInvoker 的執行&#xff1a; 在MVC 中 包括Model綁定與驗證在內的整個Action的執行是通過一個名為ActionInvoker的組件來完成的。 它同樣具有 同步/異步兩個版本。 分別實現了接口 IActionInvoker /IAsyncActionInvoker。 ASP.NET MVC 中真正用于Action方法同步和異步…

C# 基礎知識總結

要學好C#&#xff0c;基礎知識的重要性不言而喻&#xff0c;現將常用到的一些基礎進行總結&#xff0c;總結如下&#xff1a; 01. 數據類型轉換&#xff1a; 強制類型轉換(Chart--> int): char crA; int i (int)(cr); 02. 委托/匿名函數/Lamda表達式&#xff1a; 委托是匿…

Java注釋和真實世界的Spring示例

“注釋”是編程語言定義的一種&#xff0c;用作“標記”。 可以將它們視為編程語言引擎可以理解的注釋行。 它們不會直接影響程序的執行&#xff0c;但是會在需要時間接影響。 定義 注釋使用interface關鍵字定義&#xff0c;并且與接口相似。 它具有定義類似于接口方法的屬性。…

scrapy+mysql+pipeline+更新數據_python3+Scrapy爬蟲實戰(二)—— 使用pipeline數據保存到文本和數據庫(mysql)...

前言保存本地存儲Json數據配置setting保存數據庫創建數據庫創建表編寫pipelines配置setting本文是對上篇文章所講的代碼進一步優化&#xff0c;回看可以點這里&#xff0c;代碼就直接在上一篇代碼中進行改造&#xff0c;沒有的小伙伴可以在這里下載。前言Scrapy 提供了 pipelin…

NYOJ 44 子串和

子串和 時間限制&#xff1a;5000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 給定一整型數列{a1,a2...,an}&#xff0c;找出連續非空子串{ax,ax1,...,ay}&#xff0c;使得該子序列的和最大&#xff0c;其中&#xff0c;1<x<y<n。 輸入 第一行是一個…

學習進度條

學習進度條 周次 學習時間 新編寫代碼行數 博客量&#xff08;篇&#xff09; 學到知識點 第一周 160 0 1 github的使用和認識軟件工程這門課的價值。 第二周 160 130 3 復利的計算和Github的一些簡單操作還有就是進行項目的開發分析&#xff0c;還有就是對…

ARM基礎

1.  將32位a的【7&#xff1a;4】改成0101 -> a a&(~(0xF << 4)) | (0x5 << 4)&#xff1b; 2.  32位&#xff1a;單次處理數據32位。 3.  對于CPU而言&#xff0c;一切皆內存&#xff1b; 4.  DMA總線&#xff1a;不經過CPU直接在內存和內存間交換…

使用Jolokia和JMX進行客戶端服務器監視

Java監視工具的選擇非常廣泛&#xff08;由Google提供的隨機選擇和順序&#xff09;&#xff1a; javamelody 壓力探頭 JVisualVM 控制臺 賈蒙 Java JMX Nagios插件不適用 此外&#xff0c;還有各種專用工具&#xff0c;例如ActiveMQ &#xff0c; JBoss &#xff0c; Qu…

圖書管理系統數據字典_2. 結構化——數據字典

返回目錄&#xff1a;Chilan Yuk&#xff1a;軟件工程分析設計圖庫目錄?zhuanlan.zhihu.com一、基本知識用于定義數據流和數據存儲的結構&#xff0c;并給出構成所給的數據流和數據存儲的各數據項的基本數據類型。數據字典中應該包括關于數據的如下信息一般信息&#xff08;名…

HDOJ 5184 Brackets 卡特蘭數擴展

既求從點(0,0)僅僅能向上或者向右而且不穿越yx到達點(a,b)有多少總走法... 有公式: C(ab,min(a,b))-C(ab,min(a,b)-1) /// 折紙法證明卡特蘭數: http://blog.sina.com.cn/s/blog_6917f47301010cno.html Brackets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65…

010-python基礎-數據類型-字符串操作

1、移除空白 1 username.strip() 2、分割 1 names "alex,jack,rain" 2 names_1 names.split(",") #  字符串分割之后變成列表 3 print(names_1) 4 #輸出 5 [alex, jack, rain] 3、合并列表各元素成為字符串 1 names_1 [alex, jack, rain]2 names_2…

重復次數最多的 子串_每日算法系列【LeetCode 424】替換后的最長重復字符

題目描述給你一個僅由大寫英文字母組成的字符串&#xff0c;你可以將任意位置上的字符替換成另外的字符&#xff0c;總共可最多替換 k 次。在執行上述操作后&#xff0c;找到包含重復字母的最長子串的長度。示例1輸入&#xff1a; s "ABAB", k 2 輸出&#xff1a; …

python基礎(一)簡單入門

一.第一個python程序 1.交互式編程 直接在命令行里面輸入python即可進入python交互式命令行&#xff0c;linux下一樣&#xff1a; 在 python 提示符中輸入以下文本信息&#xff0c;然后按 Enter 鍵查看運行效果&#xff1a; 2.腳本式編程 把代碼都寫到文件里面&#xff0c;然后…