Dubbo高階篇_02_activemq的安裝與使用
1.activemq上傳、解壓安裝
解壓安裝
2.移動activemq到指定目錄
3.配置activemq埠
ActiveMQ 需要用到兩個埠
一個是訊息通訊的埠(預設為 61616)
一個是管理控制檯埠(預設為 8161)可在conf/jetty.xml 中修改,如下
指定jetty埠
指定通訊埠
4.在防火牆中開啟相應埠
5.啟動activemq
在瀏覽器開啟訪問
以admin/admin登入
登入成功
6.安全配置(訊息安全)
ActiveMQ 如果不加入安全機制的話,任何人只要知道訊息服務的具體地址(包括 ip,埠,訊息地址 [佇列或者主題地址 ], ),都可以肆無忌憚的傳送、接收訊息。關於
ActiveMQ 的訊息安全配置策略有多種,我們以簡單授權配置為例:在conf/activemq.xml 檔案中在broker 標籤最後加入以下內容即可:
定義了一個yixq 使用者,密碼為yxq123456,角色為users,admins
設定 admin 的使用者名稱和密碼:
確保 authenticate 的值為true(預設)
控制檯的登入使用者名稱密碼儲存在 conf/jetty-realm.properties 檔案中,內容如下
注意:使用者名稱和密碼的格式是
使用者名稱 :
重啟,再登入就是新設定的密碼登入
7.加入環境變數:
8.設定開機啟動:
# vi /etc/rc.local
加入:
su - yxq -c '/home/yxq/app/activemq/bin/activemq start'
MQ 訊息生產者也與訊息消費者的 Demo 樣例講解
訊息提供方:
package com.edu.demo.mqtest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.edu.demo.mqtest.MQProducer;
import com.edu.demo.mqtest.params.MailParam;
public class MQProducerTest {
private static final Log log = LogFactory.getLog(MQProducerTest.class);
public static void main(String[] args) {
try {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
context.start();
MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");
// 郵件傳送
MailParam mail = new MailParam();
mail.setTo(" [email protected]");
mail.setSubject("ActiveMQ測試");
mail.setContent("通過ActiveMQ非同步傳送郵件!");
mqProducer.sendMessage(mail);
context.stop();
} catch (Exception e) {
log.error("==>MQ context start error:", e);
System.exit(0);
} finally {
log.info("===>System.exit");
System.exit(0);
}
}
}
package com.edu.demo.mqtest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.edu.demo.mqtest.MQProducer;
import com.edu.demo.mqtest.params.MailParam;
public class MQProducerTest {
private static final Log log = LogFactory.getLog(MQProducerTest.class);
public static void main(String[] args) {
try {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
context.start();
MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");
// 郵件傳送
MailParam mail = new MailParam();
mail.setTo("[email protected]");
mail.setSubject("ActiveMQ測試");
mail.setContent("通過ActiveMQ非同步傳送郵件!");
mqProducer.sendMessage(mail);
context.stop();
} catch (Exception e) {
log.error("==>MQ context start error:", e);
System.exit(0);
} finally {
log.info("===>System.exit");
System.exit(0);
}
}
}
spring-context.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- 採用註釋的方式配置bean -->
<context:annotation-config />
<!-- 配置要掃描的包 -->
<context:component-scan base-package="com.edu.demo" />
<!-- 讀入配置屬性檔案 -->
<context:property-placeholder location="classpath:mq.properties" />
<!-- proxy-target-class預設"false",更改為"ture"使用CGLib動態代理 -->
<aop:aspectj-autoproxy proxy-target-class="true" />
<import resource="spring-mq.xml" />
</beans>
spring-mq.xml<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">
<!-- 真正可以產生Connection的ConnectionFactory,由對應的 JMS服務廠商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!-- ActiveMQ服務地址 -->
<property name="brokerURL" value="tcp://192.168.1.121:61616" />
<property name="userName" value="yixq"></property>
<property name="password" value="yxq123456"></property>
</bean>
<!--
ActiveMQ為我們提供了一個PooledConnectionFactory,通過往裡面注入一個ActiveMQConnectionFactory
可以用來將Connection、Session和MessageProducer池化,這樣可以大大的減少我們的資源消耗。
要依賴於 activemq-pool包
-->
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" ref="targetConnectionFactory" />
<property name="maxConnections" value="10" />
</bean>
<!-- Spring用於管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目標ConnectionFactory對應真實的可以產生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="pooledConnectionFactory" />
</bean>
<!-- Spring提供的JMS工具類,它可以進行訊息傳送、接收等 -->
<!-- 佇列模板 -->
<bean id="activeMqJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 這個connectionFactory對應的是我們定義的Spring提供的那個ConnectionFactory物件 -->
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestinationName" value="com.edu.mqtest.v1"></property>
</bean>
</beans>
pom.xml配置
測試類package com.edu.demo.mqtest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.edu.demo.mqtest.MQProducer;
import com.edu.demo.mqtest.params.MailParam;
public class MQProducerTest {
private static final Log log = LogFactory.getLog(MQProducerTest.class);
public static void main(String[] args) {
try {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
context.start();
MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");
// 郵件傳送
MailParam mail = new MailParam();
mail.setTo("[email protected]");
mail.setSubject("ActiveMQ測試");
mail.setContent("通過ActiveMQ非同步傳送郵件!");
mqProducer.sendMessage(mail);
context.stop();
} catch (Exception e) {
log.error("==>MQ context start error:", e);
System.exit(0);
} finally {
log.info("===>System.exit");
System.exit(0);
}
}
}
相關推薦
Dubbo高階篇_02_activemq的安裝與使用
1.activemq上傳、解壓安裝 解壓安裝 2.移動activemq到指定目錄 3.配置activemq埠 ActiveMQ 需要用到兩個埠 一個是訊息通訊的埠(預設為 61616) 一個是管理控制檯埠(預設為 8161)可在conf/jetty.xml 中修
dubbo monitor 2.6 安裝與搭建
Dubbo 原始碼:https://github.com/apache/incubator-dubbo/ Dubbo 版本歷史:https://github.com/apache/incubator-dubbo/releases 首先提供dubbo-monitor-2.6 服務下載連結:http
dubbo admin 2.6 安裝與搭建 - 待續
搭建dubbo-admin平臺 Dubbo 在2.6版本時合併了dubbox 的分支,現在dubbo-admin也遷移到一個單獨專案。 Dubbo 原始碼:https://github.com/apache/incubator-dubbo/ Dubbo 版本歷史:https://github.
Dubbo高階篇_07_Dubbo服務介面的設計原則
1 、設計方式 action->facade->biz->dao 好的Dubbo服務介面設計,並非只是純粹的介面服務化 2.介面型別 簡單的資料查詢介面:action.facade、dao(例根據Id查詢記錄) 帶業務邏輯的資料查詢介面:actio
Dubbo高階篇_12_dubbo服務只註冊
只註冊 (+) (#) 問題 如果有兩個映象環境,兩個註冊中心,有一個服務只在其中一個註冊中心有部署,另一個註冊中心還沒來得及部署,而兩個註冊中心的其它
Dubbo高階篇_10_Dubbo消費端直連服務提供者(開發除錯)
直連提供者(+) (#)在開發及測試環境下,經常需要繞過註冊中心,只測試指定服務提供者,這時候可能需要點對點直連,點對點直聯方式,將以服務介面為單位,忽略註冊中心的提供者列表,A介面配置點對點,不影響B介面從註冊中心獲取列表。(1) 如果是線上需求需要點對點,可在<du
Dubbo高階篇_01_訊息中介軟體在分散式架構的作用和介紹
訊息中介軟體的定義 Message-oriented middleware (MOM) is software infrastructure focused on sending and receiving messages between distributed syst
Dubbo高階篇_10_Dubbo執行緒模型
執行緒模型 http://dubbo.io/User+Guide-zh.htm 使用者指南>>執行緒模型 類似於資料庫的連線池 (+) (#) 事件處理執行緒說明如果事件處理
Dubbo+Zookeeper架構—高階篇17—Linux安裝ActiveMQ訊息中介軟體
IP:192.168.126.131 環境:CentOS 6.6、JDK8 1、 安裝 JDK 並配置環境變數(略) JAVA_HOME=/usr/local/java/jdk1.8.0_72 2、 下載 Linux 版的 ActiveMQ(當前最新版 apach
Dubbo+Zookeeper架構—高階篇20-fastdfs分散式檔案系統的安裝
目錄 FastDFS簡介 系統架構 系統架構-下載檔案流程圖 相關術語 同步機制 •同一組內的storage server之間是對等的,檔案上傳、刪除等操作可以在任意一臺storage server上進行; 安裝 環境資訊 一、所有跟蹤伺服器和儲存伺服器均執行如下
Charles安裝應用指南--安裝與代理篇
彈窗 指南 代理 .cn www 都是 info amp ray Charles是開發測試過程中十分常用的一款代理軟件,之前也寫了一點基本使用。最近有新同事入職頭一次用這個,就寫了這麽一份基本的安裝和配置筆記。 Charles 下載地址 mac:鏈接: https://pa
第一篇:saltstack安裝與配置
clu 客戶端 include 是否 htm master ssi system pro 第一篇:saltstack安裝與配置 saltstack 安裝 saltstack yum 源配置 saltstack官方源國內訪問比較慢,建議使用阿裏雲源 #centos 6 yum
C&C++入門篇---CodeBlocks的安裝與簡單配置
最近接觸C&C++語言,很多人都在用microsoft visual c++軟體,無奈本人安裝各種版本,由於與電腦不匹配,始終裝不上!有人說道可以通過換系統辦法解決,總不能為了裝這個軟體,而把我其它軟體全部解除安裝。所以就想到了這個軟體,簡單介紹下此軟體。 Code::Bloc
C語言高階篇 - 4.連結串列&狀態機與多執行緒
1.連結串列的引入 1、從陣列的缺陷說起 (1)陣列有2個缺陷,一個是陣列中所有元素的型別必須一致;第二個是陣列的元素個數必須事先制定並且一旦指定之後不能更改。 (2)如何解決
Git學習第(三)篇:Sublime Text3 Git外掛安裝與使用
1、安裝Git外掛 第一步,開啟Sublime Text3,按下Ctr+Shift+P快捷鍵,開啟命令視窗,輸入pci,選擇Package Control: Install Package選項, 第二步,在元件視窗中輸入Git,選擇Git外掛進行安裝。(裡面有很多和Git相關的外掛,沒
Linux高階篇--運維自動化之系統安裝基礎知識
Linux高階篇–運維自動化之系統安裝基礎知識 一、 系統安裝過程 系統安裝程式 CentOS系統安裝 系統啟動流程: 1、post加電自檢 2、尋找啟動裝置:硬碟,尋找啟動程式grub 1階段:mbr 446位元組 1.5:mbr後續的27個扇區 2階段:
mysql 開發進階篇系列 45 xtrabackup 安裝與使用者許可權說明(系統使用者和mysql使用者)
一. 安裝說明 安裝XtraBackup 2.4 版本有三種方式: (1) 儲存庫安裝Percona XtraBackup(推薦) (2 )下載的rpm或apt包安裝Percona XtraBackup。 (3) 原始碼編譯和安裝。 Pe
Dubbo+Zookeeper架構—高階篇16—訊息中介軟體在分散式系統中的作用及介紹
一、訊息中介軟體的定義 Message-orientedmiddleware (MOM) is software infrastructure focused on sending and receivingmessages between distribute
Linux高階程式設計基礎——程序間通訊之訊號的安裝與傳送
程序間通訊之訊號的安裝與傳送 呼叫setitimer函式分別觸發SIGALRM訊號,SIGVTALRM訊號,SIGPROF訊號 ;(可以由多程序分別觸發每個訊號) 編寫訊號安裝函式,在該函式內部能判斷接受到的是什麼訊號,並把訊號打印出來。 #include
Linux高階程式設計基礎——程序間通訊之用sigqueue函式和sigaction函式實現訊號的安裝與傳送
程序間通訊之用sigqueue函式和sigaction函式實現訊號的安裝與傳送 程序A向程序B傳送SIGUSR1訊號; 程序B收到訊號後,列印字串“receive SIGUSR1”; 要求用sigqueue函式和sigaction函式實現以上功能; /這個實