1,安装activemq
http://activemq.apache.org/download.html官网上下载
用activemq做一个超时删除
有windows和linux两种
windows的安装 :把下载的文件解压,复制到d盘中,然后打开bin里面的win64,里面有个InstallService,双击就行了,然后右键我的电脑,点击 服务和应用程序,找到
用activemq做一个超时删除
启动就行了
打开http://localhost:8161/进行登录 账号密码都是admin
2,进行配置activemq.xml
用activemq做一个超时删除
3,依赖架

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-all</artifactId>
  <version>5.12.1</version>
</dependency>
<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-core</artifactId>
  <version>5.7.0</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jms</artifactId>
  <version>4.3.4.RELEASE</version>
</dependency>
4,配置spring-jms文件
 <!--activeMQ为我们提供的ConnectionFactory-->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://192.168.0.139:61616"/>
</bean>
<!--spring jms为我们提供的连接池-->
<bean id = "connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
    <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
</bean>

<bean id="waitForDeleteQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg name="name" value="waitForDeleteQueue" />
</bean>


<!-- 配置jmsTemplate   -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"></property>
    <property name="messageConverter">
        <bean class="org.springframework.jms.support.converter.SimpleMessageConverter"></bean>
    </property>
</bean>

<!-- 待删除队列监听 -->
<bean id="waitForDeleteContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory"></property>
    <property name="destination" ref="waitForDeleteQueue"></property>
</bean>
5,在spring-context.xml里面导入spring-jms.xml文件
<!-- 引入jar包中的jms配置文件 -->
<import resource="classpath*:spring-jms.xml" />
6,在添加spu的时候创建一下监听
 jmsTemplate.send(waitForDeleteQueue,(session)-> {
            ObjectMessage objectMessage = session.createObjectMessage(goodsSpu.getId());
            objectMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY,2*60*1000);
            return objectMessage;
        });
        7,写一个公开的方法
         public void delete(Integer id) {
    GoodsSpu goodsSpu = goodsSpuMapper.selectByPrimaryKey(id);
    if (("0").equals(goodsSpu.getState())){
        goodsSpuMapper.deleteByPrimaryKey(id);

    }
}
8,写一个WaitForDeleteListener等待删除的方法实现MessageListener监听模式
@Component("waitForPaymentListener")

public class WaitForDeleteListener implements MessageListener {
@Autowired
private WaitForDeleteListener waitForDeleteListener;

private DefaultMessageListenerContainer waitForDeleteContainer;

@Autowired
public void setWaitForEvaluateContainer(DefaultMessageListenerContainer waitForDeleteContainer) {
    this.waitForDeleteContainer = waitForDeleteContainer;
    waitForDeleteContainer.setMessageListener(waitForDeleteListener);
}
@Autowired
private GoodsSpuService goodsSpuService;

@Override
public void onMessage(Message message) {
    try {

        Integer id = (Integer) ((ObjectMessage) message).getObject();
        goodsSpuService.delete(id);
        System.out.println("消费了一条消息 id是"+id);
    } catch (JMSException e) {
        e.printStackTrace();
    }
}

这个项目启动就开始监听了,创建一个spu时,activemq就开始监听这条信息,等时间到了之后,自动删除

相关文章:

  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
  • 2022-03-08
  • 2021-09-23
  • 2021-06-12
猜你喜欢
  • 2021-08-23
  • 2022-12-23
  • 2022-01-18
  • 2021-06-26
  • 2021-09-14
  • 2022-12-23
  • 2021-10-29
相关资源
相似解决方案