빅 데이터 실전 환경 구축(10)
오늘 말 하고 자 하 는 것 은 메시지 대기 열 ActiveMQ 입 니 다.이것 은 카 산 드 라 와 마찬가지 로 apache 제품 입 니 다.오픈 소스 이 고 많은 클 라 이언 트 를 지원 합 니 다.예 를 들 어 자바,C\#,ruby,python 등 입 니 다.ActiveMQ 는 JMS 와 J2EE 규범 을 완전히 지원 하 는 JMS Provider 구현 이다.jms 를 소개 하기 전에 먼저 그의 규범 을 소개 해 야 한다.속담 에 규칙 이 없 으 면 사각형 이 되 지 않 는 다 고 하 는데 마치 직렬 화 와 반 직렬 화 처럼 모두 가 일정한 규칙 을 따라 야 상호작용 을 할 수 있다.
JMS 의 기본 구성 요소 는
(1).공장 을 연결 하 는 것 은 클 라 이언 트 가 연결 을 만 드 는 대상,ActiveMQConnection Factory 류 입 니 다.
(2).연결,JMS Connection 은 클 라 이언 트 와 JMS 공급 자 간 의 가상 연결,ActiveMQConnectio 류 를 패키지 합 니 다.
(3).세 션,JMS Session 은 생산자 와 소비자 간 Produce message 와 Consume message 의 문맥 입 니 다.
세 션 은 메 시 지 를 만 드 는 생산자,소비자,메시지 에 사 용 됩 니 다.이 컨 텍스트 는 메 시 지 를 보 내 고 받 아들 이 는 세 션 의 사무 성 을 유지 합 니 다.
(4).목적지,이 목적 지 는 생산 소식 의 목표 와 소비 소식 의 목표,Destination 대상 을 나타 낸다.
JMS 규범 에서 두 가지 메시지 전달 도 메 인 을 정 의 했 는데 하 나 는 점 대 점 이 고 하 나 는 게시/구독 이다.점 대 점 의 특징 은 하나의 소식 은 한 명의 소비자 만 있 을 수 있 고 소비자 와 생산자 간 에 시간 적 상관 성 이 없다 는 것 이다.소비자 가 생산자 가 메 시 지 를 보 낼 때 운행 상태 에서 든 지 간 에 그 는 메 시 지 를 추출 할 수 있다.구독 발표 모델 의 특징 은 한 생산자 가 여러 명의 소비 자 를 가 질 수 있다 는 것 이다.이런 모델 은 시간 적 인 관련 성 이 존재 하기 때문에 소비 자 는 그 가 구독 한 후의 소식 만 소비 할 수 있 고 이전의 소식 은 소비 할 수 없다.그러나 JMS 규범 은 고객 이 지속 적 인 구독 을 할 수 있 도록 허용 한다.생산자 가 소비자 가 메 시 지 를 보 낼 때 활성화 되 지 않 은 상태 에 있 더 라 도 그 가 활성화 되면 활성화 되 지 않 기 전에 생산자 가 보 낸 메 시 지 를 소비 할 수 있다.
(5).생산 자 는 세 션 에서 만 든 대상 으로 메 시 지 를 목적지 로 보 내 는 것 이 주요 역할 입 니 다.
(6).소비 자 는 세 션 으로 만 든 대상 으로 생산자 가 목적지 로 보 내 는 메 시 지 를 받는다.
소비 자 는 동시 소비 와 비동기 소 비 를 할 수 있다.
OK,콘 셉 트 는 여기까지 하고 환경 을 살 펴 보 자.
우선 apache 사이트 에서 ActiveMQ linux 버 전 을 다운로드 합 니 다.
여기 서 내 가 다운로드 한 버 전 은 5.8.0 이다.OK 우 리 는 그것 을 FTP Server 에 올 려 놓 고 CentOS 에서 opt 폴 더 로 복사 합 니 다.
ok.우 리 는 명령 으로 스트레스 를 풀 었 다.
압축 해제 완료 후 시작 스 크 립 트 를 직접 실행 합 니 다.
[root@bogon opt]# ls
apache-activemq-5.8.0 apache-activemq-5.8.0-bin.tar.gz
[root@bogon opt]# cd apache-activemq-5.8.0
[root@bogon apache-activemq-5.8.0]# ls
activemq-all-5.8.0.jar docs NOTICE webapps-demo
bin example README.txt WebConsole-README.txt
conf lib user-guide.html
data LICENSE webapps
[root@bogon apache-activemq-5.8.0]# cd bin
[root@bogon bin]# ls
activemq activemq.jar linux-x86-32 macosx
activemq-admin diag linux-x86-64 wrapper.jar
[root@bogon bin]# sh activemq
OK,시작 합 니 다.이 단계 에서 시작 합 니 다.
기본 포트 는 8161 이 고 conf 디 렉 터 리 에 있 는 Jetty.xml 에 있 는 관리 인터페이스 를 살 펴 보 겠 습 니 다.
OK,브 라 우 저 에 H 를 입력 합 니 다.ttp://localhost:8161/admin사용자 이름과 비밀 번 호 를 입력 하 는 것 을 알려 줍 니 다.사용자 이름:admin,비밀번호 admin,
이 사용자 이름과 비밀 번 호 는 conf/jetty-realm.properties 파일 에서 수정 할 수 있 습 니 다.
OK,관리 인 터 페 이 스 는 다음 과 같 습 니 다
형 이 계속.net 개발 을 했 기 때문에.net 으로 demo 를 만들어 서 메 시 지 를 보 내 면 받 을 수 있 습 니 다.우선.net 클 라 이언 트 를 다운로드 해 야 합 니 다.사이트 에서 다운로드.net 클 라 이언 트 를 찾 은 곳
여기 서 제 가 다운로드 한 것 은 1.5.3 버 전 입 니 다.1.6.0 버 전 연결 에 문제 가 있 기 때 문 입 니 다.다운로드 후,우 리 는.net 4.0 버 전 을 사용 합 니 다.
OK,solution 을 새로 만 들 고 WinForm 두 개 를 만 드 는 프로젝트 는 다음 과 같 습 니 다.
위의 두 dll 을 참조 하 십시오.이 두 dll 은 각각 build 와 lib 아래 에 있 습 니 다.
코드 를 좀 봅 시다.설명 할 것 이 없습니다.먼저 생산자 코드 를 봅 시다.
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ActiveMQSender
{
public partial class FrmMsgSender : Form
{
IConnectionFactory factory;
IConnection connection;
ISession session;
IDestination destination;
IMessageProducer prod;
ITextMessage streamMessage;
~FrmMsgSender()
{
session.Close();
connection.Close();
}
public FrmMsgSender()
{
InitializeComponent();
this.Init();
}
private void Init()
{
factory = new ConnectionFactory("tcp://192.168.192.128:61616/");
connection = factory.CreateConnection("admin", "admin");
session = connection.CreateSession();
destination = new ActiveMQTopic("Bruce Test");
prod = session.CreateProducer(destination);
streamMessage = prod.CreateTextMessage();
}
private void btnSend_Click(object sender, EventArgs e)
{
streamMessage.Text=txtSendMsg.Text.Trim();
prod.Send(streamMessage,MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue);
}
}
}
소비자 코드 다시 보기
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FrmMsgReceiver
{
public partial class FrmMsgReceiver : Form
{
IConnectionFactory factory;
IConnection connection;
ISession session;
IDestination destination;
IMessageConsumer consumer;
~FrmMsgReceiver()
{
session.Close();
connection.Close();
}
public FrmMsgReceiver()
{
InitializeComponent();
}
private void Init()
{
factory = new ConnectionFactory("tcp://192.168.192.128:61616/");
connection = factory.CreateConnection("admin", "admin");
session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
destination = new ActiveMQTopic("Bruce Test");
consumer = session.CreateConsumer(destination);
}
private void FrmMsgReceiver1_Load(object sender, EventArgs e)
{
this.Init();
IMessage streamMessage = consumer.Receive();
this.txtReceiveMsg.Text = (streamMessage as ActiveMQStreamMessage).ReadString();
}
}
}
OK,이렇게 간단 합 니 다.저도 운행 과정 을 쓰 지 않 겠 습 니 다.VMPlayer 를 시작 한 후에 기계 의 메모리 가 90%를 사 용 했 습 니 다.불쌍 한 dell 1420.
만약 여러분 이 흥미 가 있다 면 이 문장 을 보 세 요.
http://blog.csdn.net/bodybo/article/details/5647968。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.