2013-03-11 2 views
1

나는 Spring 설명서를 읽고 Spring JMS Listener를 설정했습니다. 그러나 대기열에 메시지를 추가하더라도 코드가이를 감지하지 못합니다. 다음과 같이 내 스프링 설정은 다음과 같이JMS Spring/jms를 사용하여 Oracle 큐에서 메시지를 사용할 수 없습니다.

<bean id="dataSourceListener" class="oracle.jdbc.pool.OracleDataSource"> 
    <property name="URL" value="xxx"/> 
    <property name="user" value="xxx"/> 
    <property name="password" value="xxx"/> 
</bean> 

<bean id="jmsConnectionFactory" class="OracleAqFactoryBean"> 
    <property name="dataSource" ref="dataSourceListener" /> 
</bean> 

<jms:listener-container connection-factory="jmsConnectionFactory" acknowledge="transacted" concurrency="1-5"> 
    <jms:listener destination="queuename" ref="myMessageListener"/> 
</jms:listener-container> 

<bean id="myMessageListener" class="Listener"/> 

내 자바는 다음과 같습니다

내 사용자 정의 리스너 :

class Listener implements MessageListener { 

    @Override 
    void onMessage(Message message) { 
     // code to handle message is here 
    } 
} 

그리고 내 OracleAqFactoryBean :

public class OracleAqFactoryBean implements FactoryBean { 
private DataSource dataSource; 

public void setDataSource(DataSource dataSource) { 
    this.dataSource = dataSource; 
} 

@Override 
public Object getObject() throws Exception { 
    return AQjmsFactory.getConnectionFactory(dataSource); 
} 

@Override 
public Class<?> getObjectType() { 
    return ConnectionFactory.class; 
} 

@Override 
public boolean isSingleton() { 
    return true; 
} 

} 

[편집을하십시오 위의 설정은 정상적으로 작동 중입니다]

답변

0

FactoryBean 구현을 Spring DMLC destination 속성에 연결하는 이유를 알지 못합니다. setDestinationmethodjavax.jms.Destination 유형 만 허용하므로 분명히 올바르지 않습니다. connectionFactorymessageListener을 연결했습니다. 그것은 메시지를 소비하기 시작하는 데 필요한 전부입니다. destination 속성에 연결 한 testmq 참조를 제거하면 메시지를 성공적으로 소비해야합니다.

+0

안녕하세요. 회신 해 주셔서 감사합니다. 내 설정을 변경했고 위의 설정이 현재 작동 중입니다. 그래도 Grails 애플리케이션으로이 포트를 포팅하려했으나 대기열의 메시지를 소비하지 않습니다. 나는 누구도 전에 이것을 시도하고 어떤 아이디어가 있다고 가정하지 않습니까? – user1740752