当前位置: 首页 > news >正文

asp网站怎么做建筑公司是干什么的

asp网站怎么做,建筑公司是干什么的,2023最建议买10款手机,网站建设维护的方案如您所知#xff0c; AWS中的SQS SQS代表“简单队列服务”。 最近#xff0c;在使用它的同时#xff0c;我发现了将其称为“简单”的原因之一。 在之前的两篇文章#xff08; 此处和此处 #xff09;中#xff0c;我展示了结合Spring Framework将SQS用作JMS队列提供程序 … 如您所知 AWS中的SQS SQS代表“简单队列服务”。 最近在使用它的同时我发现了将其称为“简单”的原因之一。 在之前的两篇文章 此处和此处 中我展示了结合Spring Framework将SQS用作JMS队列提供程序 。 通过这个基本设置我决定更进一步并开始结合JMS利用JMS属性JMSReplyTo和临时队列一起尝试请求-响应模式 。 在这篇相当经典的文章中 很好地解释了它是如何工作的以及为什么这样工作。 为了显示它应该如何工作我首先显示与Apache ActiveMQ一起使用的设置。 让我展示一下从队列中挑选消息对内容执行操作并将答复发送回JMS标头中的JMSReplyTo的bean。 自从我使用Spring以来这听起来比实际要难。 首先是Java代码 package net.pascalalma.aws.sqs.requestresponse;import org.springframework.stereotype.Service;Service public class MyMessageService implements ResponsiveTextMessageDelegate {public String onMessage(String txt) {return String.valueOf(txt.length());} } 我要说的是一门很简单的课。 它实现了ResponsiveTextMessageDelegate此接口的详细信息在此处描述并仅返回传入消息内容的长度。 Spring框架会处理所有其他需要完成的事情。 该服务的Spring配置如下所示 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdcontext:component-scan base-packagenet.pascalalma.aws.sqs.requestresponse/context:component-scancontext:annotation-config/!-- ActiveMQ config --bean idjmsFactory classorg.apache.activemq.ActiveMQConnectionFactoryproperty namebrokerURLvaluetcp://localhost:61616/value/property/beanbean idjmsTemplate classorg.springframework.jms.core.JmsTemplateproperty nameconnectionFactory refjmsFactory//beanbean idrequestQueueName classjava.lang.Stringconstructor-arg valueDefaultDemoQueue//beanbean idmyMessageService classnet.pascalalma.aws.sqs.requestresponse.MyMessageService /bean idmessageListener classorg.springframework.jms.listener.adapter.MessageListenerAdapterproperty namedelegate refmyMessageService/property namedefaultListenerMethod valueonMessage/property namemessageConverter refmessageConverter //beanbean idmessageConverter classorg.springframework.jms.support.converter.SimpleMessageConverter /bean idjmsContainer classorg.springframework.jms.listener.DefaultMessageListenerContainerproperty nameconnectionFactory refjmsFactory/property namedestinationName refrequestQueueName/property namemessageListener refmessageListener//bean /beans 这与我上一篇文章中描述的配置基本相同。 唯一的区别是我现在使用一个转换器即SimpleMessageConverter该转换器负责将返回的String转换为TextMessage。 如果我们不定义此转换器则会收到以下错误 java.lang.NoSuchMethodException: net.pascalalma.aws.sqs.requestresponse.MyMessageService.onMessage(org.apache.activemq.command.ActiveMQTextMessage 接下来我们需要一个可以与我们的服务“对话”的Service客户端bean。 在Java中可能看起来像这样 package net.pascalalma.aws.sqs.requestresponse;import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.jms.core.SessionCallback; import org.springframework.jms.support.JmsUtils; import org.springframework.stereotype.Component; import org.springframework.util.Assert;import javax.annotation.Resource; import javax.jms.*; import java.util.Random;Component public class MyMessageServiceClient {final static Logger logger Logger.getLogger(MyMessageServiceClient.class);Resourceprivate JmsTemplate jmsTemplate;Autowiredprivate String requestQueueName;public String process(final String txt) {//Setup a message producer to send message to the queue the server is consuming fromMessage response jmsTemplate.sendAndReceive(requestQueueName,new MessageCreator() {public Message createMessage(Session session) throws JMSException {TextMessage message session.createTextMessage();message.setText(txt);return message;}});String result null;try {result ((TextMessage) response).getText();} catch (JMSException e) {logger.error(e);}return result;} } 我们看到的是我们利用jmsTemplate的sendAndReceive来发送在MessageCreator回调中创建的消息并等待响应消息。 此类的相应Spring配置为 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdcontext:component-scan base-packagenet.pascalalma.aws.sqs.requestresponse/context:component-scancontext:annotation-config/!-- ActiveMQ config --bean idjmsFactory classorg.apache.activemq.ActiveMQConnectionFactoryproperty namebrokerURLvaluetcp://localhost:61616/value/property/bean!-- End ActiveMQ specific --bean idjmsTemplate classorg.springframework.jms.core.JmsTemplateproperty nameconnectionFactory refjmsFactory//beanbean idrequestQueueName classjava.lang.Stringconstructor-arg valueDefaultDemoQueue//beanbean idmyMessageServiceClient classnet.pascalalma.aws.sqs.requestresponse.MyMessageServiceClient/ /beans 现在剩下的是一些“容器”可以在我为“服务器”部分创建主类的操作中查看这些bean package net.pascalalma.aws.sqs.requestresponse;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class MessageServiceMain {public static void main(String[] args) {//Build application context by reading spring-config.xmlApplicationContext ctx new ClassPathXmlApplicationContext(new String[]{requestresponse/application-context.xml});} } 在您的IDE或终端中运行此类仅读取SPring配置并实例化服务bean。 客户的Main类还有更多代码 package net.pascalalma.aws.sqs.requestresponse;import org.apache.log4j.Logger; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.HashMap; import java.util.Map; import java.util.Random;public class MessageServiceClientMain {final static Logger logger Logger.getLogger(MessageServiceClientMain.class);public static void main(String[] args) {//Build application context by reading spring-config.xmlApplicationContext ctx new ClassPathXmlApplicationContext(new String[]{requestresponse/application-context-client.xml});//Get an instance of ProductService class;MyMessageServiceClient messageServiceClient (MyMessageServiceClient) ctx.getBean(myMessageServiceClient);//Call getProduct method of ProductServiceString random createRandomString();for (int i0; i16; i) {String key random.substring(i);logger.info(Sending to service: key);logger.info(Sending to service with length: key.length());String result messageServiceClient.process(key);logger.info(Received from service: result);logger.info();}}private static String createRandomString() {Random random new Random(System.currentTimeMillis());long randomLong random.nextLong();return Long.toHexString(randomLong);} } 运行此类将生成消息并将其发送到服务并打印从服务接收的结果如下所示 2015-04-20 20:29:14 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: 42fdcd4355cc5314 2015-04-20 20:29:14 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 16 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 16 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: 2fdcd4355cc5314 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 15 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 15 2015-04-20 20:29:15 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 到目前为止一切都很好。 现在让我们使用AWS SQS代替本地Active MQ实例。 只需在两个Spring配置中简单地修改所用JmsFactory的配置即可轻松实现 ...bean idcredentialsProviderBean classcom.amazonaws.auth.DefaultAWSCredentialsProviderChain/bean idconnectionFactoryBuilder classcom.amazon.sqs.javamessaging.SQSConnectionFactory$Builderproperty nameregionName valueeu-west-1/property namenumberOfMessagesToPrefetch value5/property nameawsCredentialsProvider refcredentialsProviderBean//beanbean idjmsFactory classcom.amazon.sqs.javamessaging.SQSConnectionFactoryfactory-beanconnectionFactoryBuilderfactory-methodbuild/ ... 现在如果我们启动“服务器”应用程序和“客户端”应用程序我们将获得以下输出 2015-04-25 20:22:49 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: f1db848691a26c85 2015-04-25 20:22:49 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 16 Exception in thread main org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: Unsupported Methodat org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)at org.springframework.jms.core.JmsTemplate.executeLocal(JmsTemplate.java:986)at org.springframework.jms.core.JmsTemplate.sendAndReceive(JmsTemplate.java:922)at net.pascalalma.aws.sqs.requestresponse.MyMessageServiceClient.process(MyMessageServiceClient.java:29)at net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain.main(MessageServiceClientMain.java:29)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) Caused by: javax.jms.JMSException: Unsupported Methodat com.amazon.sqs.javamessaging.SQSSession.createTemporaryQueue(SQSSession.java:744)at org.springframework.jms.core.JmsTemplate.doSendAndReceive(JmsTemplate.java:946)at org.springframework.jms.core.JmsTemplate$12.doInJms(JmsTemplate.java:926)at org.springframework.jms.core.JmsTemplate$12.doInJms(JmsTemplate.java:922)at org.springframework.jms.core.JmsTemplate.executeLocal(JmsTemplate.java:983)... 8 more 如您所见我们得到了一个堆栈跟踪告诉我们SQS不支持JMS方法“ createTemporaryQueue” 到目前为止对JMS的支持。 我猜这就是为什么他们称其为简单队列服务因为仅实现了一些可能的JMS方法;-)。 我搜索了有关此的更多信息但没有任何运气。 但是我确实遇到了这个框架 Nevado JMS 。 他们声称是AWS SQS / SNS的JMS驱动程序所以我决定尝试一下。 首先我在项目的pom中添加了以下依赖项 dependencygroupIdorg.skyscreamer/groupIdartifactIdnevado-jms/artifactIdversion1.3.1/version /dependency 然后再次在两个Spring配置中修改JmsFactory这次是 ...bean idsqsConnectorFactory classorg.skyscreamer.nevado.jms.connector.amazonaws.AmazonAwsSQSConnectorFactory /bean idjmsFactory classorg.skyscreamer.nevado.jms.NevadoConnectionFactoryproperty namesqsConnectorFactory refsqsConnectorFactory /property nameawsAccessKey value${aws.accessKey} /property nameawsSecretKey value${aws.secretKey} //bean ... 现在当我运行主类时我得到了预期的结果 2015-04-25 20:33:27 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: dad74fbff8e0a2f2 2015-04-25 20:33:27 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 16 2015-04-25 20:33:53 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 16 2015-04-25 20:33:53 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 2015-04-25 20:33:53 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: ad74fbff8e0a2f2 2015-04-25 20:33:53 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 15 2015-04-25 20:34:04 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 15 2015-04-25 20:34:04 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 2015-04-25 20:34:04 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: d74fbff8e0a2f2 2015-04-25 20:34:04 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 14 2015-04-25 20:34:09 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 14 2015-04-25 20:34:09 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 2015-04-25 20:34:09 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: 74fbff8e0a2f2 2015-04-25 20:34:09 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 13 2015-04-25 20:34:17 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 13 2015-04-25 20:34:17 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 2015-04-25 20:34:17 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(27) - Sending to service: 4fbff8e0a2f2 2015-04-25 20:34:17 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(28) - Sending to service with length: 12 2015-04-25 20:34:21 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(30) - Received from service: 12 2015-04-25 20:34:21 INFO net.pascalalma.aws.sqs.requestresponse.MessageServiceClientMain(31) - 因此这表明尽管需要本地社区的一些帮助但所谓的“简单”服务仍然可以使用更高级的东西-) 翻译自: https://www.javacodegeeks.com/2015/05/more-advanced-stuff-with-jms-and-aws-sqs.html
http://www.pierceye.com/news/656871/

相关文章:

  • 上海建网站社交型网站开发
  • 西安建网站做自动化设备哪个网站
  • 深圳优化网站关键词wordpress如何拖移小工具
  • 优秀网站设计欣赏国内网站后期
  • 计算机应用技术php网站开发php网站进后台
  • asp网站安全小x导航正品
  • 陕西省建设监理协会网站成绩查询如何用网站做课件
  • 帝国网站怎么仿站个人做旅游网站的意义
  • 网站建设白沟做公众号策划的网站
  • 站长工具怎么用知名做网站哪家好
  • 做视频网站怎么备案企业内网
  • 建设网站南沙区建湖做网站找哪家好
  • 做网站应该会什么问题视频网站做app
  • 南阳做网站费用企业品牌维护
  • 分形科技做网站怎么样网站常用的js效果
  • 做企业展示网站网站建设与制作段考试题
  • 设计网站哪个好用网站建设策划方案t
  • 化妆培训学校网站建设徐州市工程建设交易平台
  • 杭州正规制作网站公司吗网站如何三合一
  • php网站开发说明手机网站建设的公司排名
  • 网站开发asp.net和sql数据库网页制作教程(第三版)书籍
  • wordpress搬站手机网站模板 html5
  • 免费设计网站网站开发及建设费用
  • 推广qq群的网站androidstudio开发app教程
  • 一个公司备案多个网站要注意合肥网站策划
  • 做网站推广也要营业执照吗网站关键词排名优化技巧
  • 网站建设需要考啥证广告设计与制作专业课程
  • 泸州市往建局建设银行网站名称广州网站建设 推广公司哪家好
  • 运维网站制作dw设计个人网页
  • 南城网站建设公司信息吉林省建设招标网站