목차
1. 메시지 저장 방법" >1. 메시지 저장 방법
三、AMQ消息存储" >三、AMQ消息存储
四、JDBC存储" >四、JDBC存储
五、内存消息存储" >五、内存消息存储
Java java지도 시간 JMS Active MQ 메시지 저장 인스턴스에 대한 자세한 설명

JMS Active MQ 메시지 저장 인스턴스에 대한 자세한 설명

Jun 26, 2017 am 11:39 AM
active 저장 정보

1. 메시지 저장 방법

ActiveMQ는 JMS 사양에서 지속성 메시지와 비지속성 메시지를 지원합니다.

  • 지속성 메시지는 일반적으로 소비자의 사용 여부에 관계없이 소비자가 메시지를 소비하도록 보장하는 데 사용됩니다. 온라인이든 아니든. 메시지가 소비된 것으로 확인되면 저장소에서 삭제됩니다

  • 비지속성 메시지는 일반적으로 알림 및 실시간 데이터를 보내는 데 사용되며 일반적으로 성능이 먼저 요구되며 메시지 신뢰성은 필수가 아닙니다.

  • MQ는 메모리, 파일, 관계형 데이터베이스 등과 같은 플러그형 풀아웃 메시지 저장을 지원합니다.

ActiveMQ의 큐 메시지 모델 저장

FIFO(선입선출) 사용 하나의 메시지는 한 명의 소비자만 소비할 수 있으며, 메시지는 소비가 확인된 후에만 삭제됩니다.

주제 메시지 모델(지속적 구독용)
 각 구독자가 얻은 메시지는 실제로 메시지 복사본 하나만 저장됩니다. MQ는 메시지 저장소를 가리키는 포인터를 제공하고 메시지 복사본을 배포합니다. 그렇지 않으면 모든 영구 구독자가 메시지를 수신할 때까지 메시지를 삭제할 수 없습니다.

영구 저장 방법:

  1. KahaDB 메시지 저장

  2. AMQ 메시지 저장

  3. JDBC 메시지 저장

  4. 인 메모리 메시지 저장

2. KahaDB 저장 방법

KahaDB는 ActiveMQ 5.4부터 기본 지속성 플러그인입니다. KahaDb의 복구 시간은 이전 AMQ보다 훨씬 짧고 더 적은 수의 데이터 파일을 사용하므로 AMQ를 완전히 대체할 수 있습니다. KahaDB의 지속성 메커니즘도 로그 파일, 인덱스 및 캐시를 기반으로 합니다.

(1) KahaDB 주요 기능:

  1. 메시지를 로그 형식으로 저장합니다.

  2. 메시지 인덱스는 B-Tree 구조에 저장되며 빠르게 업데이트할 수 있습니다.

  3. 다양한 복구 메커니즘을 지원합니다.

(2) 적용 가능한 시나리오:

  1. 처리량이 많은 애플리케이션

  2. 대용량 메시지 저장

( 3) 구성 방법 conf/activemq.xml:

       <persistenceAdapter><kahaDB directory="${activemq.data}/kahadb"/></persistenceAdapter>
로그인 후 복사

(四)、KahaDB存储原理:

    当有活动消费者时,用于临时存储,消息会被发送给消费着,同时被安排将被存储,如果消息及时被确认,就不需要写入到磁盘。写入到磁盘中的数据消息,在后续的消息活动中,如果消息发送成功,变标记为可删除的。系统会周期性的清除或者归档日志文件。

  1、KahaDB内部结构

Data logs:消息日志包含了消息日志和一些命令
Cache:当有活动消费者时,用于临时存储,消息会被发送给消费着,同时被安排将被存储,如果消息及时被确认,这不需要写入到磁盘
Btree indexes(消息索引):用于引用消息日志(message id),它存储在内存中,这样能快速定位到。MQ会定期将内存中的消息索引保存到metadata store中,避免大量消息未发送时,消息索引占用过多内存空间。
Redo log用于在非正常关机情况下维护索引完整性。

2、目录结构:

 

Db log files:用于存储消息(默认大小32M),当log日志满了,会创建一个新的,当log日志中的消息都被删除,该日志文件会被删除或者归档。
Archive directory:当datalog不在被kahadb需要会被归档(通过archiveDataLogs属性控制)。
Db.data:存放Btree indexs。
Db.redo:存放redo file,用于恢复Btree indexs。

三、AMQ消息存储

  写入消息时,会将消息写入日志文件,由于是顺序追加写,性能很高。为了提升性能,创建消息主键索引,并且提供缓存机制,进一步提升性能。每个日志文件的大小都是有限制的(默认32m,可自行配置)。当超过这个大小,系统会重新建立一个文件。当所有的消息都消费完成,系统会删除这个文件或者归档(取决于配置)。主要的缺点是AMQ Message会为每一个Destination创建一个索引,如果使用了大量的Queue,索引文件的大小会占用很多磁盘空间。而且由于索引巨大,一旦Broker崩溃,重建索引的速度会非常慢。

特点:类似KahaDB,也包含了事务日志,每个destination都包含一个index文件,AMQ适用于高吞吐量的应用场景,但是不适合多个队列的场景。

 配置方式conf/activemq.xml:

       <!--AMQ    directory:数据存储路径 syncOnWrite:是否同步写入  maxFileLength:日志文件大小 --><persistenceAdapter><amqPersistenceAdapterdirectory="${activemq.data}/AMQdb"syncOnWrite="true"maxFileLength="10mb" /></persistenceAdapter>
로그인 후 복사

1、AMQ内部结构:

 

Data logs:消息日志包含了消息日志
Cache:用于消息的快速检索
Reference store indexes:用于引用datalogs中的消息,通过message ID 关联

2、目录结构:

Lock:保证同一时间只有一个borker访问文件目录
temp-storag:用于存储非持久化消息(当不在被存储在内存中),如等待慢消费者处理消息
Kr-store:用于存储引用消息日志数据
journal directory:包含了消息文件、消息日志和消息控制信息
Archive:归档的数据日志

四、JDBC存储

支持通过JDBC将消息存储到关系数据库,性能上不如文件存储,能通过关系型数据库查询到消息的信息。

MQ支持的数据库:Apache Derby、MYsql、PostgreSQL、Oracle、SQLServer、Sybase、Informix、MaxDB。

存储表结构:

A、ACTIVEMQ_MSGS:用于存储消息,Queue和Topic都存储在这个表中:

  • ID:自增的数据库主键

  • CONTAINER:消息的Destination

  • MSGID_PROD:消息发送者客户端的主键

  • MSG_SEQ:是发送消息的顺序,MSGID_PROD+MSG_SEQ可以组成JMS的MessageID

  • EXPIRATION:消息的过期时间,存储的是从1970-01-01到现在的毫秒数

  • MSG:消息本体的Java序列化对象的二进制数据

  • PRIORITY:优先级,从0-9,数值越大优先级越高

B、ACTIVEMQ_ACKS:用于存储订阅关系。如果是持久化Topic,订阅者和服务器的订阅关系在这个表保存:

  • 主要的数据库字段如下:

  • CONTAINER:消息的Destination

  • SUB_DEST:如果是使用Static集群,这个字段会有集群其他系统的信息

  • CLIENT_ID:每个订阅者都必须有一个唯一的客户端ID用以区分

  • SUB_NAME:订阅者名称

  • SELECTOR:选择器,可以选择只消费满足条件的消息。条件可以用自定义属性实现,可支持多属性AND和OR操作

  • LAST_ACKED_ID:记录消费过的消息的ID。

C、ACTIVEMQ_LOCK(消息锁,保证同一时间只能有一个broker访问这些表结构):
        表activemq_lock在集群环境中才有用,只有一个Broker可以获得消息,称为Master Broker,其他的只能作为备份等待Master Broker不可用,才可能成为下一个Master Broker。这个表用于记录哪个Broker是当前的Master Broker。

 

配置方式:

1、配置数据源 conf/acticvemq.xml文件:

 <!-- 配置数据源-->  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/activemq?relaxAutoCommit=true"/><property name="username" value="root"/><property name="password" value="111111"/><property name="maxActive" value="200"/><property name="poolPreparedStatements" value="true"/>  </bean>
로그인 후 복사

2、配置broke中的persistenceAdapter :

dataSource指定持久化数据库的bean,createTablesOnStartup是否在启动的时候创建数据表,默认值是true,这样每次启动都会去创建数据表了,一般是第一次启动的时候设置为true,之后改成false。

 <!-- JDBC配置 --><persistenceAdapter><jdbcPersistenceAdapter dataSource="#mysql-ds"  createTablesOnStartup="false"/></persistenceAdapter>
로그인 후 복사

ps:数据库activemq 需要手动创建。

五、内存消息存储

内存消息存储,会将所有的持久化消息存储在内存中,必须注意JVM使用情况以及内存限制,适用于一些能快速消费的数据量不大的小消息,当MQ关闭或者宕机,未被消费的内存消息会被清空。

配置方式 设置 broker属性值  persistent="false":

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" persistent="false">
로그인 후 복사

 

위 내용은 JMS Active MQ 메시지 저장 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

iOS 17의 iMessage에서 오른쪽으로 스와이프하고 빠르게 답장하는 방법 iOS 17의 iMessage에서 오른쪽으로 스와이프하고 빠르게 답장하는 방법 Sep 20, 2023 am 10:45 AM

iPhone의 iMessage에서 밀어서 답장하는 방법 참고: 밀어서 답장 기능은 메시지 앱의 일반 SMS 대화가 아닌 iOS 17의 iMessage 대화에서만 작동합니다. iPhone에서 메시지 앱을 엽니다. 그런 다음 iMessage 대화로 이동하여 답장하려는 iMessage를 오른쪽으로 스와이프하면 됩니다. 이 작업이 완료되면 선택한 iMessage에 초점이 맞춰지고 다른 모든 메시지는 배경에서 흐려집니다. 답장을 입력하기 위한 텍스트 상자와 체크인, 장소, 스티커, 사진 등과 같은 iMessage 앱에 접근하기 위한 "+" 아이콘이 표시됩니다. 메시지를 입력하시면 됩니다.

메시지를 보냈지만 상대방이 거부했다는 것은 무엇을 의미하나요? 메시지를 보냈지만 상대방이 거부했다는 것은 무엇을 의미하나요? Mar 07, 2024 pm 03:59 PM

메시지가 전송되었지만 상대방이 거부했습니다. 이는 보낸 정보가 장치에서 성공적으로 전송되었지만 어떤 이유로 상대방이 메시지를 받지 못했음을 의미합니다. 보다 구체적으로 말하면, 이는 일반적으로 상대방이 특정 권한을 설정하거나 특정 조치를 취함으로써 귀하의 정보가 정상적으로 수신되지 않는 경우가 많습니다.

화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. 화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. Mar 07, 2024 pm 10:43 PM

이 웹사이트는 3월 7일 화웨이의 데이터 스토리지 제품 라인 사장인 Zhou Yuefeng 박사가 최근 MWC2024 컨퍼런스에 참석하여 웜 데이터(WarmData)와 콜드 데이터(ColdData)용으로 설계된 차세대 OceanStorArctic 자전 스토리지 솔루션을 구체적으로 시연했다고 보도했습니다. Huawei의 데이터 스토리지 제품 라인 사장 Zhou Yuefeng은 일련의 혁신적인 솔루션을 출시했습니다. 이미지 출처: 이 사이트에 첨부된 Huawei의 공식 보도 자료는 다음과 같습니다. 이 솔루션의 가격은 자기 테이프보다 20% 저렴하며, 전력 소비는 하드 디스크보다 90% 낮습니다. 해외 기술 매체인 blockandfiles에 따르면, Huawei 대변인은 자기전기 저장 솔루션에 대한 정보도 공개했습니다. Huawei의 자기전자 디스크(MED)는 자기 저장 매체의 주요 혁신입니다. 1세대 ME

iOS 17: 메시지에서 이모티콘을 스티커로 사용하는 방법 iOS 17: 메시지에서 이모티콘을 스티커로 사용하는 방법 Sep 18, 2023 pm 05:13 PM

iOS17에서 Apple은 다른 Apple 사용자와 더욱 창의적이고 재미있게 소통할 수 있도록 메시지 앱에 몇 가지 새로운 기능을 추가했습니다. 기능 중 하나는 이모티콘을 스티커로 사용할 수 있는 기능입니다. 스티커는 수년 동안 메시지 앱에 사용되었지만 지금까지는 크게 바뀌지 않았습니다. iOS17에서는 Apple이 모든 표준 이모티콘을 스티커로 취급하여 실제 스티커와 동일한 방식으로 사용할 수 있기 때문입니다. 이는 본질적으로 더 이상 대화에 삽입하는 데 국한되지 않는다는 것을 의미합니다. 이제 메시지 풍선의 어느 곳으로나 드래그할 수도 있습니다. 서로 쌓아서 작은 이모티콘 장면을 만들 수도 있습니다. 다음 단계는 iOS17에서 작동하는 방식을 보여줍니다.

Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite 개발 팁: 데이터를 암호화하고 저장하는 방법 인터넷 기술의 급속한 발전으로 인해 데이터 보안 및 개인 정보 보호가 점점 더 중요해지고 있습니다. Vue3+TS+Vite 개발 환경에서 데이터를 암호화하고 저장하는 방법은 모든 개발자가 직면해야 하는 문제입니다. 이 기사에서는 개발자가 애플리케이션 보안 및 사용자 경험을 개선하는 데 도움이 되는 몇 가지 일반적인 데이터 암호화 및 저장 기술을 소개합니다. 1. 데이터 암호화 프런트엔드 데이터 암호화 프런트엔드 암호화는 데이터 보안을 보호하는 중요한 부분입니다. 일반적으로 사용되는

Windows 11에서 캐시를 지우는 방법: 사진이 포함된 자세한 튜토리얼 Windows 11에서 캐시를 지우는 방법: 사진이 포함된 자세한 튜토리얼 Apr 24, 2023 pm 09:37 PM

캐시란 무엇입니까? 캐시(ka·shay로 발음)는 자주 요청되는 데이터 및 지침을 저장하는 데 사용되는 특수 고속 하드웨어 또는 소프트웨어 구성 요소로, 웹 사이트, 애플리케이션, 서비스 및 기타 시스템 측면을 더 빠르게 로드하는 데 사용할 수 있습니다. . 캐싱을 사용하면 가장 자주 액세스하는 데이터를 쉽게 사용할 수 있습니다. 캐시 파일은 캐시 메모리와 동일하지 않습니다. 캐시 파일은 여러 프로그램에서 필요할 수 있는 PNG, 아이콘, 로고, 셰이더 등과 같이 자주 필요한 파일을 의미합니다. 이러한 파일은 일반적으로 숨겨져 있는 실제 드라이브 공간에 저장됩니다. 반면에 캐시 메모리는 주 메모리 및/또는 RAM보다 빠른 메모리 유형입니다. CPU에 더 가깝고 RAM에 비해 빠르기 때문에 데이터 액세스 시간을 크게 줄입니다.

메시지를 보냈으나 상대방이 거부했습니다. 차단해야 할까요, 아니면 삭제해야 할까요? 메시지를 보냈으나 상대방이 거부했습니다. 차단해야 할까요, 아니면 삭제해야 할까요? Mar 12, 2024 pm 02:41 PM

1. 블랙리스트에 추가됨: 메시지가 전송되었지만 상대방이 거부했습니다. 일반적으로 블랙리스트에 등록된 상태에서는 상대방에게 메시지를 보낼 수 없습니다. 메시지를 받을 수 있습니다. 2. 네트워크 문제: 수신자의 네트워크 상태가 좋지 않거나 네트워크 장애가 있는 경우 메시지가 성공적으로 수신되지 않을 수 있습니다. 이 시점에서 메시지를 다시 보내기 전에 네트워크가 정상으로 돌아올 때까지 기다릴 수 있습니다. 3. 상대방이 방해 금지 모드를 설정한 경우: 수신자가 WeChat에서 방해 금지 모드를 설정한 경우 보낸 사람의 메시지는 일정 시간 동안 알림을 받거나 표시되지 않습니다.

메시지 화면을 밝히도록 Xiaomi 14Pro를 설정하는 방법은 무엇입니까? 메시지 화면을 밝히도록 Xiaomi 14Pro를 설정하는 방법은 무엇입니까? Mar 18, 2024 pm 12:07 PM

샤오미 14Pro는 뛰어난 성능과 구성을 갖춘 플래그십 모델로, 공식 출시 이후 높은 판매량을 달성했습니다. 예를 들어, 샤오미 14Pro의 많은 작은 기능은 메시지를 표시하도록 설정할 수 있습니다. 기능은 작지만 매우 실용적입니다. 휴대전화를 사용할 때 누구나 다양한 문제에 직면하게 됩니다. 그러면 메시지 화면을 켜도록 Xiaomi 14Pro를 설정하는 방법은 무엇입니까? 메시지 화면을 밝히도록 Xiaomi 14Pro를 설정하는 방법은 무엇입니까? 1단계: 휴대전화의 설정 앱을 엽니다. 2단계: "잠금 화면 및 비밀번호" 옵션을 찾을 때까지 아래로 스와이프하고 클릭하여 들어갑니다. 3단계: "잠금 화면 및 비밀번호" 메뉴에서 "알림 화면 켜기" 옵션을 찾아서 클릭하세요. 4단계: '알림 수신 시 화면 켜기' 페이지에서 스위치를 켜서 활성화합니다.

See all articles