动态监听activemq 的topic!!!!!

现springboot整合的active目前,监听话题使用的是@JmsListener,但是目前想动态里面参数,一愁莫展,所以想问哈各位,有没有啥方法达到动态修改@JmsListener的参数,或则其他具体点的方法达到动态监听,要哭了!!!!

1个回答

EvanLoveS
EvanLoveS 我试过了,没行,他后面写的我有点不清不楚的
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
activemq中的topic队列在删除队列后消费者依然能够接收到请求

我在jmeter中对一个http接口进行了一百次请求![图片说明](https://img-ask.csdn.net/upload/202001/09/1578569643_727542.png) ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578570841_912688.png) 接口如下: ``` java @GetMapping("send") public void send(String msg) { // 指定消息发送的目的地及内容 System.out.println(new Date().toString()); queueMessageService.setTopic("topic",msg); } ``` 调用的Bean ``` java @Component public class QueueMessageService { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; public void setQueue(String queue,String msg){ jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queue),msg); } public void setTopic(String topic,String msg) { jmsMessagingTemplate.convertAndSend(new ActiveMQTopic(topic),msg); } } ``` 我使用了两个消费者用于接收请求 ```java @JmsListener(destination = "topic") public void receiveMessage(String message) throws InterruptedException { Thread.sleep(4000); System.out.println(hfnsTermService.getCount()); System.out.println(new Date().toString()+"topic接收:"+message); } @JmsListener(destination = "topic") public void readResponse(String message) throws InterruptedException { Thread.sleep(1000); for(HfnsTerm hfnsTerm:hfnsTermService.getHfnsTerm()){ System.out.println(hfnsTerm.getId()); } System.out.println(new Date().toString()+"topic1接收:"+message); } ``` ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578570403_712572.png) ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578570672_991950.png) 当我在请求还没完全接收完时在activemq控制台把topic队列进行了删除操作 ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578570549_153369.png) 此时activemq中是没有topic队列的,但是我依然能够接收到topic队列中的消息 ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578570782_702718.png) 请问这是为什么?

ActiveMQ的topic消息突然丢失,必须重启服务才能再收到

有没有哪位大神遇到过这种情况,监听ActiveMQ的topic消息时,服务刚启动时是好的,可以收到消息,但几个小时以后就突然收不到了,也不报错,必须重启服务才能再收到消息。我使用的是spring boot集成activemq,但我觉得跟这个关系不大,因为我单独跑mq也遇到同样的问题,求大神解答

集群应用在接收到ActiveMq topice消息接收重复消息问题

集群应用在接收到ActiveMq topic消息接收重复消息问题 例如 应用A有 A_1及A_2两台机器 ,想问一下,两台同时监听topic后, 怎么处理同一条消息给两台重复接收的问题

使用ActiveMQ的Topic模式,生产者生产了两条消息,队列中有两条消息,消费者只消费一条就不再消费了

1、问题:使用ActiveMQ的Topic模式,消息队列中有两条消息,消费者只消费一条消息就不再消费了? 代码如下: 生产者代码 ``` package com.babi.common.utils; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.Topic; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /* * ACtiveMQ生产者 * */ public class UpgradeQMSender { // MQname private static final String MESSAGE_QUEUE = "mopark-upgrade"; // 默认的ActiveMQ服务器端绑定的端口。 private static final int PORT = 61616; /** * MQ发送消息 * * @param state * @param deviceID * @param versionId */ public static void sendupgrade(String state, String deviceID, String versionId) { // ConnectionFactory :连接工厂,JMS 创建连接 ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS Provider 的连接 Connection connection = null; // Session: 一个发送或接收消息的线程 Session session; // Destination :消息的目的地 Topic topic; // MessageProducer:消息生产者。 MessageProducer producer; // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://127.0.0.1:" + PORT); try { // 构造从工厂得到连接对象 connection = connectionFactory.createConnection(); // 启动 connection.start(); // 获取操作连接 session = connection.createSession(Boolean.TRUE.booleanValue(), Session.AUTO_ACKNOWLEDGE); // 获取session注意参数值 liwenhui 是一个服务器的queue,须在在ActiveMq的console配置 // destination = session.createQueue(MESSAGE_QUEUE); // 创建消息 topic = session.createTopic(MESSAGE_QUEUE); // 得到消息生成者,发送者 producer = session.createProducer(topic); // 设置不持久化 producer.setDeliveryMode(DeliveryMode.PERSISTENT); // 设置消息过期时间 producer.setTimeToLive(1000 * 10 * 60); CommonLog.info(UpgradeQMSender.class, "state:" + state); CommonLog.info(UpgradeQMSender.class, "deviceID:" + deviceID); // 发送消息。 sendupgradeMessage(session, producer, state, deviceID, versionId); session.commit(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != connection) connection.close(); } catch (Throwable ignore) { } } } /** * MQ调用方法 * * @param session * @param producer * @param state * @param deviceID * @param versionId */ public static void sendupgradeMessage(Session session, MessageProducer producer, String state, String deviceID, String versionId) { MapMessage message = null; try { message = session.createMapMessage(); message.setString("state", state); message.setString("deviceID", deviceID); message.setString("versionId", versionId); } catch (Exception e) { e.printStackTrace(); } // 发送消息到目的地方 try { System.out.println(message); producer.send(message); CommonLog.info(UpgradeQMSender.class, "消息内容:" + message); } catch (JMSException e) { e.printStackTrace(); } } } ``` 消费者代码: ``` package com.babi.lockservice; import java.io.File; import java.io.RandomAccessFile; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session; import javax.jms.Topic; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQPrefetchPolicy; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.jms.listener.DefaultMessageListenerContainer; import com.babi.bean.Device; import com.babi.common.CommonLog; import com.babi.common.Params; import com.babi.common.FileUpload.FileUploadFile; import com.babi.common.FileUpload.FileUploadServer; import com.babi.common.FileUpload.Filespilt; import com.babi.common.FileUpload.RemoteFile; import com.babi.dao.JedisUtils; import com.babi.dao.LockDAO; import io.netty.channel.ChannelHandlerContext; import redis.clients.jedis.Jedis; public class UpgradeConsumer { String LOCKKEY = null; // lockID:lockID LockDAO lockdao = new LockDAO(); // 数据库 Device device = new Device(); // 车锁bean JedisUtils jedisUtils = new JedisUtils(); // redis工具类 public RandomAccessFile randomAccessFile; FileUploadFile fileUploadFile; public void QMConsumer() throws JMSException { Connection connection = null; // 连接 Session session = null; // 会话:接受或者发送消息的线程 MessageConsumer consumer = null; // 消息接收者 CommonLog.info(this.getClass(), "MQ消费者启动中......"); try { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, Params.MQ_HOST + ":" + Params.MQ_PORT); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); Topic topic = session.createTopic(Params.UPGRADEMQ_NAME); consumer = session.createConsumer(topic); } catch (Exception e) { throw new RuntimeException("创建MQ连接时发生了错误!"); } try { // 注册监听器,注册后,列队的消息变化会自动触发监听器,接收消息并处理 consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { try { MapMessage mapMessage = (MapMessage) message; if (mapMessage != null) { message.acknowledge(); String action = mapMessage.getString("state"); String LOCKID = mapMessage.getString("deviceID"); String VersionId = mapMessage.getString("versionId"); LOCKKEY = "LOCK:" + LOCKID; // 处理MQ发来的消息 if (LOCKID != null) { System.out.println("来自API的下行指令:action=" + action + ", LOCKID=" + LOCKID + ", imei=" + lockdao.findImeiByLockId(LOCKID)); CommonLog.info(this.getClass(), "来自API的下行指令:action=" + action + ", LOCKID=" + LOCKID + ", imei=" + lockdao.findImeiByLockId(LOCKID)); jedisUtils.setutils(LOCKKEY, "LOCKACK", "FALSE"); jedisUtils.setutils(LOCKKEY, "CMDSTATUS", " "); ChannelHandlerContext ctx = OSMap2Node.channelMap.get(LOCKID); if (action.equals(Integer.toString(SERVERCMD.LOCKUPGRADE.getIndex()))) { String FileUrl = download(VersionId);// 根据VersionId查找固件下载地址 System.out.println("FileUrl" + FileUrl); String file_name = RemoteFile.downRemoteFile(FileUrl, "firmwareVersion");// 获取下载之后文件的保存的路径 sendFileToLock(ctx, file_name); } } } } catch (Exception e) { e.printStackTrace(); } } }); // } } catch (Exception e) { throw new RuntimeException("MQ接收消息并处理时发生了错误!"); } } /** * 发送文件 * * @param ctx * @param file_name * @throws Exception */ protected void sendFileToLock(ChannelHandlerContext ctx, String file_name) throws Exception { System.out.println("sendFileToLock" + file_name); File file = new File("./" + file_name); new Filespilt().split(file, ctx); } /** * 根据版本Id查找下载地址 * * @param VersionId * @return * @throws Exception */ public String download(String VersionId) throws Exception { SqlRowSet rowSet = lockdao.findAddressByVersion(VersionId); String url = null; if (rowSet.next()) { url = rowSet.getString("download_address"); } return url; } } ```

使用activeMQ监听,调用mapper时为null怎么解决,请大神帮忙看看

**spring文件配置如下:** <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/jms"> <context:annotation-config/> <context:component-scan base-package="com.lizx" /> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> <!-- 定义事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 定义事务策略 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!--所有以query开头的方法都是只读的 --> <tx:method name="query*" read-only="true" /> <tx:method name="get*" read-only="true" /> <!--其他方法使用默认事务策略 --> <tx:method name="delete*" propagation="REQUIRED" read-only="false"/> <tx:method name="edit*" propagation="REQUIRED" read-only="false"/> <tx:method name="add*" propagation="REQUIRED" read-only="false"/> </tx:attributes> </tx:advice> <aop:config> <!--pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型, 这里星号表明匹配所有返回类型。 com.bw.service.*.*(..)表明匹配com.bw.service包下的所有类的所有 方法 --> <aop:pointcut id="myPointcut" expression="execution(* com.lizx.app.service.*.*(..))" /> <!--将定义好的事务处理策略应用到上述的切入点 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" /> </aop:config> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- 加载mybatis.cfg.xml文件 --> <property name="configLocation" value="classpath:conf/SqlMapConfig.xml"></property> <!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名 --> <property name="typeAliasesPackage" value="com.lizx.app"></property> </bean> <!-- 自动扫描所有的Mapper接口与文件 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.lizx.app.mapper"></property> </bean> <import resource="classpath*:conf/spring-ActiveMQ.xml" /> </beans> ------------------------------------ **activemq配置如下:** <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:jms="http://www.springframework.org/schema/jms" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.1.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd"> <mvc:annotation-driven /> <amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://127.0.0.1:61616" userName="admin" password="admin" /> <!-- 配置JMS连接工长 --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <constructor-arg ref="amqConnectionFactory" /> <property name="sessionCacheSize" value="100" /> </bean> <!-- 定义消息队列(Queue) --> <bean id="demoQueueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <!-- 设置消息队列的名字 --> <constructor-arg> <value>Jaycekon</value> </constructor-arg> </bean> <!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory" /> <property name="defaultDestination" ref="demoQueueDestination" /> <property name="receiveTimeout" value="10000" /> <!-- true是topic,false是queue,默认是false,此处显示写出false --> <property name="pubSubDomain" value="false" /> </bean> <!-- 配置消息队列监听者(Queue) --> <bean id="queueMessageListener" class="com.lizx.app.MQListener" /> <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="demoQueueDestination" /> <property name="messageListener" ref="queueMessageListener" /> </bean> </beans> ------------------------------------ **在监听中使用为null时的情况** ![图片说明](https://img-ask.csdn.net/upload/201802/25/1519561067_682041.png) **在其它地方调用,不为null时的情况:** ![图片说明](https://img-ask.csdn.net/upload/201802/25/1519561131_923727.png)

求解决:ActiveMQ在发布订阅模式下会递增式的重复接收消息

求解决:ActiveMQ在发布订阅模式下有多个consumer,consumer会递增式的重复接收消息 问题:springboot集成ActiveMQ实现了消费队列和发布订阅两种消息类型,发布订阅模式下有TopicConsumer1和TopicConsumer2,监听的destination都是alarm.topic,但这两个consumer会递增式的重复接收消息。我的实现代码如下: ------------------------------------------------------------- test入口类 @RunWith(SpringRunner.class) @SpringBootTest(classes = MessageCenterApplication.class) public class ActivemqTest { @Autowired private Producer producer; @Test public void testSendTopicMessage(){ for (int i = 0; i < 5; i++) { producer.sendTopicMessage(Destinations.ALARM_TOPIC, "here is a topic message, the number is " + i); } } /*输出结果如下,这个输出结果不是我所期望的 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 0 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 0 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 1 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 1 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 1 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 1 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 2 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 3 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer2接收到的消息内容为:here is a topic message, the number is 4 TopicConsumer1接收到的消息内容为:here is a topic message, the number is 4*/ } ------------------------------------------------------------- Producer实现类 @Component public class Producer { @Autowired @Qualifier("jmsQueueMessagingTemplate") private JmsMessagingTemplate jmsQueueMessagingTemplate; @Autowired @Qualifier("jmsTopicMessagingTemplate") private JmsMessagingTemplate jmsTopicMessagingTemplate; /** * 使用queue消息类型(点对点) */ public void sendQueueMessage(String destination, final String message){ Queue queue = new ActiveMQQueue(destination); jmsQueueMessagingTemplate.convertAndSend(queue, message); } /** * 使用topic消息类型 */ public void sendTopicMessage(String destination, final String message){ Topic topic = new ActiveMQTopic(destination); jmsTopicMessagingTemplate.convertAndSend(topic, message); } } ------------------------------------------------------------- TopicConsumer1和TopicConsumer2的实现代码 @Component public class TopicConsumer1 { @JmsListener(destination = Destinations.ALARM_TOPIC, containerFactory = "jmsListenerContainerFactory4Topic") public void receive(String message){ System.out.println("TopicConsumer1接收到的消息内容为:" + message); } } @Component public class TopicConsumer2 { @JmsListener(destination = Destinations.ALARM_TOPIC, containerFactory = "jmsListenerContainerFactory4Topic") public void receive(String message){ System.out.println("TopicConsumer2接收到的消息内容为:" + message); } } ------------------------------------------------------------- jmsTopicMessagingTemplate对应的bean的配置 @Configuration public class JmsMessagingConfig { @Autowired @Qualifier(value = "jmsQueueTemplate") private JmsTemplate jmsQueueTemplate; @Autowired @Qualifier(value = "jmsTopicTemplate") private JmsTemplate jmsTopicTemplate; @Bean(name = "jmsQueueMessagingTemplate") public JmsMessagingTemplate jmsQueueMessagingTemplate(){ return new JmsMessagingTemplate(jmsQueueTemplate); } @Bean(name = "jmsTopicMessagingTemplate") public JmsMessagingTemplate jmsTopicMessagingTemplate(){ return new JmsMessagingTemplate(jmsTopicTemplate); } } ------------------------------------------------------------ jmsTopicTemplate对应的bean的配置 @Configuration public class JmsConfig { private final JmsProperties jmsProperties; private final ObjectProvider<DestinationResolver> destinationResolver; private final ObjectProvider<MessageConverter> messageConverter; public JmsConfig(JmsProperties jmsProperties, ObjectProvider<DestinationResolver> destinationResolver, ObjectProvider<MessageConverter> messageConverter) { this.jmsProperties = jmsProperties; this.destinationResolver = destinationResolver; this.messageConverter = messageConverter; } @ConfigurationProperties(prefix = "spring.activemq") @Bean(name = "jmsQueueTemplate") @Primary public JmsTemplate jmsQueueTemplate(PooledConnectionFactory pooledConnectionFactory) { JmsTemplate template = new JmsTemplate(pooledConnectionFactory); // 设置为使用queue消息类型 template.setPubSubDomain(false); DestinationResolver destinationResolver = (DestinationResolver) this.destinationResolver.getIfUnique(); if (destinationResolver != null) { template.setDestinationResolver(destinationResolver); } MessageConverter messageConverter = (MessageConverter) this.messageConverter.getIfUnique(); if (messageConverter != null) { template.setMessageConverter(messageConverter); } // deliveryMode, priority, timeToLive 的开关,要生效,必须配置为true,默认false template.setExplicitQosEnabled(true); // DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 template.setDeliveryMode(DeliveryMode.PERSISTENT); // 默认不开启事务 // 如果不启用事务,则会导致XA事务失效; // 作为生产者如果需要支持事务,则需要配置SessionTransacted为true template.setSessionTransacted(true); return template; } @ConfigurationProperties(prefix = "spring.activemq") @Bean(name = "jmsTopicTemplate") public JmsTemplate jmsTopicTemplate(PooledConnectionFactory pooledConnectionFactory) { JmsTemplate template = new JmsTemplate(pooledConnectionFactory); // 设置为使用topic消息类型 template.setPubSubDomain(true); DestinationResolver destinationResolver = (DestinationResolver) this.destinationResolver.getIfUnique(); if (destinationResolver != null) { template.setDestinationResolver(destinationResolver); } MessageConverter messageConverter = (MessageConverter) this.messageConverter.getIfUnique(); if (messageConverter != null) { template.setMessageConverter(messageConverter); } // deliveryMode, priority, timeToLive 的开关,要生效,必须配置为true,默认false template.setExplicitQosEnabled(true); // DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 template.setDeliveryMode(DeliveryMode.PERSISTENT); // 默认不开启事务 // 如果不启用事务,则会导致XA事务失效; // 作为生产者如果需要支持事务,则需要配置SessionTransacted为true template.setSessionTransacted(true); return template; } @ConfigurationProperties(prefix = "spring.activemq") @Bean(name = "jmsListenerContainerFactory4Topic") public DefaultJmsListenerContainerFactory jmsListenerContainerFactory4Topic(PooledConnectionFactory pooledConnectionFactory) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(pooledConnectionFactory); // 设置为使用topic消息类型 factory.setPubSubDomain(true); //如果单独配置了分布式事务,则启用 // if (this.transactionManager != null) { // factory.setTransactionManager(transactionManager); // } else { factory.setSessionTransacted(Boolean.valueOf(true)); // } JmsProperties.Listener listener = jmsProperties.getListener(); factory.setAutoStartup(listener.isAutoStartup()); if (listener.getAcknowledgeMode() != null) { factory.setSessionAcknowledgeMode(Integer.valueOf(listener.getAcknowledgeMode().getMode())); } String concurrency = listener.formatConcurrency(); if (concurrency != null){ factory.setConcurrency(concurrency); } return factory; } @ConfigurationProperties(prefix = "spring.activemq") @Bean(name = "jmsListenerContainerFactory4Queue") public DefaultJmsListenerContainerFactory jmsListenerContainerFactory4Queue(PooledConnectionFactory pooledConnectionFactory) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(pooledConnectionFactory); // 设置为使用queue消息类型 factory.setPubSubDomain(false); //如果单独配置了分布式事务,则启用 // if (this.transactionManager != null) { // factory.setTransactionManager(transactionManager); // } else { factory.setSessionTransacted(Boolean.valueOf(true)); // } JmsProperties.Listener listener = jmsProperties.getListener(); factory.setAutoStartup(listener.isAutoStartup()); if (listener.getAcknowledgeMode() != null) { factory.setSessionAcknowledgeMode(Integer.valueOf(listener.getAcknowledgeMode().getMode())); } String concurrency = listener.formatConcurrency(); if (concurrency != null){ factory.setConcurrency(concurrency); } return factory; } } -------------------------------------------------------------------------------------- yml配置文件的配置 spring: #jms配置,配合activemq一起配置 jms: listener: concurrency: 1 max-concurrency: 50 #activemq配置 activemq: #默认使用spring-boot-starter-activemq内嵌的activemq,除非明确指定了broker-url in-memory: false user: system password: manager broker-url: auto+nio://192.168.137.5:61616 pool: enabled: true max-connections: 500

求问,activemq监控中,队列的Messages Enqueued数量比Messages Dequeued少是为什么?

![图片说明](https://img-ask.csdn.net/upload/201908/09/1565322886_337353.png) 但是进到队列里面的消费数据看又没有问题

ActiveMQ 有时候接收不到消息

使用ActiveMQ做个小例子的时候, 有时候消息接收不到,有时候可以,没有被消费的消息,再重启后又能全部接收到,不知道问题出在哪。谢谢各位大神指点 Spring ActiveMQ 配置如下 ``` package com.zym.robot.config; import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.jms.connection.CachingConnectionFactory; import com.zym.robot.constant.Constant; @Configuration @Lazy(false) public class ConnectionFactoryConfig{ @Autowired private ApplicationUtil applicationUtil; @Bean(name="activeMQConnectionFactory") public ActiveMQConnectionFactory activeMQConnectionFactory(){ ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(); activeMQConnectionFactory.setBrokerURL(Constant.activemq_brokerurl); activeMQConnectionFactory.setUserName(Constant.activemq_username); activeMQConnectionFactory.setPassword(Constant.activemq_password); activeMQConnectionFactory.setTrustAllPackages(true); return activeMQConnectionFactory; } @Bean(name="connectionFactory") public CachingConnectionFactory connectionFactory(){ CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.setTargetConnectionFactory((ActiveMQConnectionFactory)applicationUtil.getBean("activeMQConnectionFactory")); cachingConnectionFactory.setSessionCacheSize(10); return cachingConnectionFactory; } } ``` ``` package com.zym.robot.config; import javax.jms.Destination; import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Lazy; import org.springframework.jms.connection.CachingConnectionFactory; import org.springframework.jms.core.JmsTemplate; @Configuration @Import(ConnectionFactoryConfig.class) @Lazy(false) public class MQTemplateFactory { @Autowired @Qualifier("connectionFactory") private CachingConnectionFactory connectionFactory; @Autowired private ApplicationUtil applicationUtil; /** * @author ZhaoYM * @description 微信消息队列 * @return */ @Bean(name="messageQueueTemplate") public JmsTemplate messageQueueTemplate(){ JmsTemplate template = new JmsTemplate(); template.setPubSubNoLocal(false); template.setConnectionFactory(connectionFactory); template.setDefaultDestination((ActiveMQQueue)applicationUtil.getBean("messageQueue")); return template; } /** * @author ZhaoYM * @description 登录消息队列 * @return */ @Bean(name="loginQueueTemplate") public JmsTemplate loginQueueTemplate(){ JmsTemplate template = new JmsTemplate(); template.setPubSubNoLocal(false); template.setConnectionFactory(connectionFactory); template.setDefaultDestination((ActiveMQQueue)applicationUtil.getBean("loginQueue")); return template; } @Bean(name="messageQueue") public Destination messageQueue(){ ActiveMQQueue activeMQQueue = new ActiveMQQueue(); activeMQQueue.setPhysicalName("messageQueue"); return activeMQQueue; } @Bean(name="loginQueue") public Destination loginQueue(){ ActiveMQQueue activeMQQueue = new ActiveMQQueue(); activeMQQueue.setPhysicalName("loginQueue"); return activeMQQueue; } } ``` 发送消息代码 ``` package com.zym.robot.activemq; import java.io.Serializable; import org.springframework.jms.core.JmsTemplate; public class SendMessage { /** * @author ZhaoYM * @description 发送消息 * @param object * @param jmsTemplate */ public static void sendMessage(Serializable object, JmsTemplate jmsTemplate){ SimpleMessageCreatorImpl messageCreator = new SimpleMessageCreatorImpl(); messageCreator.setMessage(object); jmsTemplate.send(messageCreator); } } ``` ``` package com.zym.robot.activemq; import java.io.Serializable; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import org.springframework.jms.core.MessageCreator; /** * @author ZhaoYM * @description message 简单实现 */ public class SimpleMessageCreatorImpl implements MessageCreator{ private Serializable message; public Serializable getMessage() { return message; } public void setMessage(Serializable message) { this.message = message; } @Override public Message createMessage(Session session) throws JMSException { if (message == null) { return session.createTextMessage("默认消息"); }else { return session.createObjectMessage(getMessage()); } } } ``` [![图片说明](https://img-ask.csdn.net/upload/201704/25/1493109289_893485.png)

activemq 阻塞。消费基本不动了

假死了不动了。配置文件如下。谁碰到过类似的。 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd "> <!--使用pool进行链接 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供--> <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!-- <property name="brokerURL" value="tcp://192.168.1.88:61616"/>--> <property name="brokerURL" value="tcp://127.0.0.1:61616"/> <property name="userName" value="userName"/> <property name="password" value="password"/> <property name="useAsyncSend" value="true"/> </bean> <!--这个是队列目的地 --> <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>activemq_mq</value> </constructor-arg> </bean> <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory" ref="targetConnectionFactory"/> <property name="maxConnections" value="100"/> </bean> <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <property name="targetConnectionFactory" ref="pooledConnectionFactory"/> </bean> <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> <property name="connectionFactory" ref="connectionFactory" /> </bean> <!--这个是主题目的地,一对多的--> <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="topic"/> </bean> <!--监听接收消息--> <bean id="activemqReceiveService" class="com.neixunbao.platform.common.mq.ActivemqReceiveService"></bean> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="activemqReceiveService" /> </bean> </beans> ```

activeMQ异步,订阅模式,如何解决消息丢失和重发

我们现在在做一个商城项目;使用activeMQ完成系统之间的信息同步,实用异步发 送,发布订阅模式,因为异步,所以使用的事listener监听,这样如果我配置消息 持久化,问题如下: 1. consumer返回给broker的ackknowldge是在onmessage方法后,所以不 会存在消息丢失,对吗? 2. 如果consumer在接收到消息但是未给broker应答,consumer宕机了,默认重发 数是6次,如果我consumer一直宕机,broker会在发送第一条发现连接不上的时候停止发送,还是一直发完6次?最后消息又会怎样? 3. 我的消息都比较重要,不允许丢失,要怎么处理? 各位大哥,我已经看各种博文两天两夜了,实在理解总结不了,请帮忙解惑,不要丢给我一堆连接叫我看,谢谢!

Activemq如何设置多个不同类型的消费者

多个web项目之间共用一个activemq可以实现,消息共享吗?访问同一个消息队列每个项目根据定义的不同类型的消费者同时对同一个消息进行单次消费。

activemq Number Of Consumers 消费者数量一直在下降

配置的一个监听队列的程序,发现隔断时间消费者的数量就变少了,最后变为0。让人苦恼的是项目和mq都没有报错信息,而且一样配置的其他队列没有问题,怀疑是程序处理的逻辑或者时间方面的问题。 <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="${mq.url}" /> <property name="useAsyncSend" value="true" /> </bean> <bean id="pooledJmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="maxConnections" value="${mq.maxJmsConnections}" /> <property name="maximumActive" value="${mq.maximumActive}" /> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="pooledJmsConnectionFactory" /> </bean> <bean id="tmsToAppConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="pooledJmsConnectionFactory" /> <property name="concurrentConsumers" value="10" /> <property name="destination" ref="tmsToAppQueue" /> <property name="messageListener" ref="tmsToAppListener" /> </bean>

ActiveMQ生产者能查看当前消费者的ID或者查看有多少个消费者吗?

最近刚接触ActiveMQ,想实现一个类似QQ好友上线提醒这样的功能,有什么方法可以获取当前连接的消费者呢?网上查资料好像JMX好像可以实现,但是我是用C#写的,C#有什么办法实现吗?各位大神求指教,小弟感激不尽!

activeMQ的疑问,高手求教

![图片说明](https://img-ask.csdn.net/upload/201703/21/1490066185_164005.png) 这个topic 是一个什么信息,我发现每次处理完一条消息后 都会生成这样一条信息,有点儿糊涂。

ActiveMQ发布订阅问题?

1、使用ActiveMQ开发,如果发布者每1秒发布一条数据,有些订阅者每4秒读取一条,怎么才能让订阅者跳过缓存,读取到最新数据。 ``` //发布者测试代码 public class MessageProducer { //定义ActivMQ的连接地址 private static final String ACTIVEMQ_URL = "tcp://localhost:61616"; public static void main(String[] args) throws JMSException { //创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory( ACTIVEMQ_URL); //创建连接 Connection connection = activeMQConnectionFactory.createConnection(); //打开连接 connection.start(); //创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建队列目标 //Destination destination = session.createQueue(QUEUE_NAME); Topic test = session.createTopic("572890"); //创建一个生产者 javax.jms.MessageProducer producer = session.createProducer(test); //创建模拟100个消息 int num = 0; long sTime = System.currentTimeMillis(); TextMessage message = null; while (true) { num++; message = session.createTextMessage(num+""); //发送消息 producer.send(message); try { System.out.println(num); Thread.sleep(1000); } catch (Exception e) { } if (num > 100) { break; } } long eTime = System.currentTimeMillis(); System.out.println("总计用时:" + (eTime - sTime)); //关闭连接 connection.close(); } } //订阅者测试代码 public class MessageConsumer { //定义ActivMQ的连接地址 private static final String ACTIVEMQ_URL = "tcp://localhost:61616"; //定义发送消息的队列名称 private static final String QUEUE_NAME = "PP_ERROR"; static int num = 0; public static void main(String[] args) throws JMSException { //创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL); //创建连接 Connection connection = activeMQConnectionFactory.createConnection(); //打开连接 connection.start(); //创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建队列目标 //Destination destination = session.createQueue(QUEUE_NAME); Topic test = session.createTopic("572890"); //创建消费者 javax.jms.MessageConsumer consumer = session.createConsumer(test); //创建消费的监听 consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { num ++; TextMessage textMessage = (TextMessage) message; try { System.out.println(textMessage.getText()); Thread.sleep(4000); } catch (Exception e) { e.printStackTrace(); } } }); } } ```

spring+Jms开发topic类型消息时重复接收消息解决

参照javaeyes前辈做的jms配置如下: tomcat下Context.xml配置: <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jms/ConnectionFactory" auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="vm://localhost" brokerName="LocalActiveMQBroker"/> <Resource name="jms/Queue" auth="Container" type="org.apache.activemq.command.ActiveMQQueue" description="my Queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="FOO.BAR"/> <Resource name="jms/JMSChat" auth="Container" type="org.apache.activemq.command.ActiveMQTopic" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="stockQuoteTopic"/> </Context> spring配置: <!-- JMS整合 --> <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jms/ConnectionFactory"></property> </bean> <bean id="jmsTopic" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jms/JMSChat"></property> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsConnectionFactory"></property> <property name="defaultDestination" ref="jmsTopic"></property> </bean> <!-- 在jmsTemplate中指明发送目的地即jmsTopic队列 --> <bean id="sender" class="com.xch.websecurity.util.message.Sender"> <property name="jmsTemplate" ref="jmsTemplate"></property> </bean> <bean id="receive" class="com.xch.websecurity.util.message.Receiver"></bean> <!-- 指明了jmsQueue队列的接收监听器 --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory"></property> <property name="destination" ref="jmsTopic"></property> <property name="messageListener" ref="receive"></property> </bean> com.xch.websecurity.util.message.Sender类代码: public class Sender { private JmsTemplate jmsTemplate; public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } public void send(final String text){ System.out.println("---Send:"+text); jmsTemplate.send(new MessageCreator(){ public Message createMessage(Session arg0) throws JMSException { return arg0.createTextMessage(text); } }); } } com.xch.websecurity.util.message.Receiver代码: public class Receiver implements MessageListener { public void onMessage(Message message) { if (message instanceof TextMessage) { TextMessage text = (TextMessage) message; try { System.out.println("ReceiveJms:" + text.getText()); } catch (JMSException e) { e.printStackTrace(); } } } } servlet相关代码: String Text = request.getParameter("text"); sender.send(Text); System.out.println("asdfasdf"); 运行结果: 第一次: ---Send:uhkjlkj asdfasdf ReceiveJms:uhkjlkj ReceiveJms:uhkjlkj 第二次: ---Send:iljlkjkl ReceiveJms:iljlkjkl ReceiveJms:iljlkjkl ReceiveJms:iljlkjkl asdfasdf 第三次:ReceiveJms:iljlkjkl依次递增打印 而把 java:comp/env/jms/JMSChat换为java:comp/env/jms/Queue 的点对点配置没错 就是topic方式是出现这问题 [b]问题补充:[/b] 我在另一个应用B里配置了同样的代码,都如下: <!-- JMS整合 --> <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jms/ConnectionFactory"></property> </bean> <bean id="jmsTopic" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jms/JMSChat"></property> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsConnectionFactory"></property> <property name="defaultDestination" ref="jmsTopic"></property> </bean> <!-- 在jmsTemplate中指明发送目的地即jmsTopic队列 --> <bean id="sender" class="com.xch.websecurity.util.message.Sender"> <property name="jmsTemplate" ref="jmsTemplate"></property> </bean> <bean id="receive" class="com.xch.websecurity.util.message.Receiver"></bean> <!-- 指明了jmsQueue队列的接收监听器 --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory"></property> <property name="destination" ref="jmsTopic"></property> <property name="messageListener" ref="receive"></property> </bean> 可是B还是收不到我看了http://www.iteye.com/topic/234101的说连接到同一服务器就ko啦!~~我连接的jndi名都一样的就是收不到

Spring JMS监听器问题

<!-- 消息监听容器 --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="concurrentConsumers" value="2" /> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="messageReceiver" /> <property name="pubSubNoLocal" value="false"></property> </bean> 如果我的activeMQ没有打开,就一直报这样的错: 警告: Setup of JMS message listener invoker failed for destination 'queue://emailQueue' - trying to recover. Cause: Connection reset 2014-2-8 16:20:49 org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful 严重: Could not refresh JMS Connection for destination 'queue://emailQueue' - retrying in 5000 ms. Cause: Error while attempting to retrieve a connection from the pool; nested exception is javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused: connect 怎么不让它报这个错啊?每次开发都把MQ打开,比较麻烦

rabbitmq 怎么实现多个消费者同时接收一个队列的消息?

通配符 与 订阅模式都是 d发送端发送消息到交换机 接收端定义不通的队列名绑定到交换机 消费者监听不同的队列 实现的多个消费者同时接收同一个消息 怎么实现多个消费者同时接收一个队列的消息呢 类似activemq的topic模式

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

捷联惯导仿真matlab

捷联惯导的仿真(包括轨迹仿真,惯性器件模拟输出,捷联解算),标了详细的注释捷联惯导的仿真(包括轨迹仿真,惯性器件模拟输出,捷联解算),标了详细的注释

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C++语言基础视频教程

C++语言基础视频培训课程:本课与主讲者在大学开出的程序设计课程直接对接,准确把握知识点,注重教学视频与实践体系的结合,帮助初学者有效学习。本教程详细介绍C++语言中的封装、数据隐藏、继承、多态的实现等入门知识;主要包括类的声明、对象定义、构造函数和析构函数、运算符重载、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会利用C++语言解决问题,具备进一步学习利用C++开发应用程序的基础。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2020-五一数学建模大赛C类问题饲料加工配比及优化.pdf

2020年,“51”数学建模C类问题,关于饲料配比问题以及加工优化方案。论文采用统计分析,建立了关于饲料加工的多目标优化模型。并利用蒙特卡罗算法对目标函数进行优化,解决了饲料加工质量最优配比问题并进行

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

navicat简体中文版 绿色版 (64位)

解压后安装navicat,打开navicat执行PatchNavicat即破解成功。可以正常使用啦。

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

一学即懂的计算机视觉(第一季)

图像处理和计算机视觉的课程大家已经看过很多,但总有“听不透”,“用不了”的感觉。课程致力于创建人人都能听的懂的计算机视觉,通过生动、细腻的讲解配合实战演练,让学生真正学懂、用会。 【超实用课程内容】 课程内容分为三篇,包括视觉系统构成,图像处理基础,特征提取与描述,运动跟踪,位姿估计,三维重构等内容。课程理论与实战结合,注重教学内容的可视化和工程实践,为人工智能视觉研发及算法工程师等相关高薪职位就业打下坚实基础。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/26281 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,但是大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录https://edu.csdn.net/course/detail/26281,点击右下方课程资料、代码、课件等打包下载

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Qt5.10 GUI完全参考手册(强烈推荐)

本书是Qt中文版的参考手册,内容详尽易懂,详细介绍了Qt实现的各种内部原理,是一本不可多得的参考文献

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

进程监控软件 Performance Monitor中文版

告诉你每个程序现在在做什么,还可以根据你的要求过滤无关的内容。

八数码的深度优先算法c++实现

人工智能的八数码的深度优先算法c++实现

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

2020_五一数学建模_C题_整理后的数据.zip

该数据是我的程序读取的数据,仅供参考,问题的解决方案:https://blog.csdn.net/qq_41228463/article/details/105993051

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问