Spring Boot ActiveMQ 접근 암 호 를 설정 하 는 방법
소 편 에서 사용 하 는 ActiveMQ 버 전 은 apache-activemq-5.15.13 입 니 다.
1.콘 솔 관리 비밀번호 설정
ActiveMQ 는 Jetty 서버 를 사용 합 니 다.ActiveMQ 설치 디 렉 터 리 에 있 는\conf\jetty.xml 파일 을 찾 습 니 다.
<bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
<property name="name" value="BASIC" />
<property name="roles" value="admin" />
<!-- set authenticate=false to disable login -->
<property name="authenticate" value="true" />
</bean>
메모:authenticate 의 속성 은 기본적으로"true"입 니 다.관리 인터페이스 에 로그 인 할 때 계 정과 비밀 번 호 를 입력 해 야 합 니 다.'false'라면'true'로 바 꿔 야 한다.관리 인터페이스 로그 인 시 사용자 이름과 비밀 번 호 를 수정 하고 conf/jetty-realm.properties 파일 에 사용 자 를 추가 합 니 다.
## ---------------------------------------------------------------------------
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements. See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License. You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
# admin: admin, admin
# user: user, user
wiener: wiener1237, admin
설정 정 보 는 사용자 이름,비밀번호,캐릭터 이름 순 으로 설명 합 니 다.2.정보 생산자 와 소비자 비밀번호 인증
\conf\activemq.xml 에서 broker 태그 에 마지막 으로 생산자 와 소비자 비밀번호 인증 정 보 를 추가 합 니 다.
<!-- destroy the spring context on shutdown to stop jetty -->
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>
<!-- add plugins -->
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
</broker>
activemq.username 과 activemq.password 의 값 은 파일 credentials.properties 에서 설정 합 니 다.다음 절 차 를 참조 하 십시오.사용자 이름 비밀 번 호 를 설정 합 니 다.파일 은\conf\credentials.properties 에 있 습 니 다.
## ---------------------------------------------------------------------------
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements. See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License. You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
# Defines credentials that will be used by components (like web console) to access the broker
# activemq.username=system
# activemq.password=manager
# guest.password=password
activemq.username=wiener
activemq.password=wiener1237
guest.password=password
3.자바 엔 드 설정 사용자 이름 비밀번호인증 코드 는'[Spring Boot]ActiveMQ 게시/구독 메시지 모드 소개'를 바탕 으로 재 구성 되 며,추가 클래스 인 ActiveMQConfig 를 제외 하고 수정 부분 은 모두 빨간색 글꼴 로 표 시 됩 니 다.application.properties 연결 정보 설정:
## URL of the ActiveMQ broker. Auto-generated by default. For instance `tcp://localhost:61616`
# failover:(tcp://localhost:61616,tcp://localhost:61617)
# tcp://localhost:61616
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false
# false, point to point( ) ,true ,
spring.jms.pub-sub-domain=true
spring.activemq.user=wiener
spring.activemq.password=wiener1237
프로젝트 에 ActiveMQ 연결 속성 을 설정 하고 ActiveMQConfig 클래스 를 추가 합 니 다.
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
/**
* ActiveMQ
*
* @author east7
* @date 2020/6/23 11:27
*/
@Configuration
public class ActiveMQConfig {
@Value("${spring.activemq.user}")
private String usrName;
@Value("${spring.activemq.password}")
private String password;
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Bean
public ActiveMQConnectionFactory connectionFactory() {
System.out.println("password =========== " + password);
return new ActiveMQConnectionFactory(usrName, password, brokerUrl);
}
/**
* ,
* @param connectionFactory
* @return
*/
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory){
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
bean.setConnectionFactory(connectionFactory);
return bean;
}
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory){
// ,
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
bean.setPubSubDomain(true);
bean.setConnectionFactory(connectionFactory);
return bean;
}
}
bean.setPub SubDomain(true)설정 은 properties 파일 에 spring.jms.pub-sub-domain 의 속성 값 을 덮어 쓰기 때문에 properties 에 spring.jms.pub-sub-domain 속성 을 설정 하지 않 을 수 있 습 니 다.또한 이러한 설정 방식 은 시스템 에서 점대 점 과 게시/구독 두 가지 메시지 모드 를 동시에 사용 할 수 있다.구독 자 수정:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
/**
*
*/
@Component
public class Subscriber1 {
private static Logger logger = LoggerFactory.getLogger(Subscriber1.class);
/**
* topicListener1, containerFactory
*
* @param text
* @throws JMSException
*/
@JmsListener(destination = "topicListener1", containerFactory = "jmsListenerContainerTopic")
public void subscriber(String text) {
logger.info("Subscriber1 :{}", text);
}
}
container Factory 의 값"jmsListener Container Topic"은 ActiveMQConfig 의 함수 JmsListener Container Factory와 자동 으로 일치 합 니 다.jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory)。 Subscriber 2 역시 수정 하면 됩 니 다.코드 는 생략 합 니 다.container Factory 의 값 이 jmsListener Container Queue 로 설정 되면 점 도착 메시지 모드 가 열 립 니 다.테스트 함 수 는 topicTest()도 사용 할 수 있 습 니 다.다음은 새로운 테스트 경 로 를 제공 합 니 다.contrller 에서 테스트 합 니 다.새로운 방법
@Autowired
private Publisher publisher;
@GetMapping("/sendTopicMsg")
public String sendTopicMsg(String msg) {
//
Destination destination = new ActiveMQTopic("topicListener2");
for (int i = 0; i < 8; i++) {
publisher.publish(destination, msg + i);
}
return msg + " ";
}
실행 결과 생략.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.