jms是什么意思
Java Message Service的简称。
读音:英 [ˈdʒ
JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。由Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。 JMS是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC (Java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JML 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。 消息收发系统是异步的,也就是说,JMS 客户机可以发送消息而不必等待回应。比较可知,这完全不同于基于 RPC 的(基于远程过程的)系统,如 EJB 1.1、CORBA 和 Java RMI 的引用实现。在 RPC 中,客户机调用服务器上某个分布式对象的一个方法。在方法调用返回之前,该客户机被阻塞;该客户机在可以执行下一条指令之前,必须等待方法调用结束。在 JMS 中,客户机将消息发送给一个虚拟通道(主题或队列),而其它 JMS 客户机则预订或监听这个虚拟通道。当 JMS 客户机发送消息时,它并不等待回应。它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应。 JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断网络连接的客户机,诸如移动电话和PDA的最好的选择。另外, JMS采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。 Java消息服务支持两种消息模型:Point-to-Point消息(P2P)和发布订阅消息(Publish Subscribe messaging,简称Pub/Sub)。JMS规范并不要求供应商同时支持这两种消息模型,但开发者应该熟悉这两种消息模型的优势与缺点。 P2P消息模型是在点对点之间传递消息时使用。如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置。 Pub/Sub模型在一到多的消息广播时使用。如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。换句话说,它适用于所有的消息消费程序并不要求能够收到所有的信息或者消息消费程序并不想接收到任何消息的情况。 JMS通过允许创建持久订阅来简化时间相关性,即使消息预订者未激活也可以接收到消息。此外,使用持久订阅还可通过队列提供灵活性和可靠性,而仍然允许消息被发给许多的接收者。 Topic Subscriber topic Subscriber = topicSession.createDurableSubscriber(topic, subscriptionName); Connection对象表示了到两种消息模型中的任一种的消息系统的连接。服务器端和客户机端对象要求管理创建的JMS连接的状态。连接是由Connection Factory创建的并且通过JNDI查寻定位。 //取得用于 P2P的 QueueConnectionFactory QueueConnectionFactory = queueConnectionFactory( ); Context messaging = new InitialContext( ); QueueConnectionFactory = (QueueConnectionFactory) Messaging.lookup(“QueueConnectionFactory”); //取得用于 pub/sub的 TopicConnectionFactory TopicConnectonFactory topicConnectionFactory; Context messaging = new InitialContext(); topicConnectionFactory = (TopicConnectionFactory) messaging.lookup(“TopicConnectionFactory”); 注意:用于P2P的代码和用于PublishSubscribe的代码非常相似。 如果session被标记为transactional的话,确认消息就通过确认和校正来自动地处理。如果session没有标记为 transactional,你有三个用于消息确认的选项。 ・ AUTO_ACKNOWLEDGE session将自动地确认收到一则消息。 ・ CLIENT_ACKNOWLEDGE 客户端程序将确认收到一则消息,调用这则消息的确认方法。 ・ DUPS_OK_ACKNOWLEDGE 这个选项命令session“懒散的”确认消息传递,可以想到,这将导致消息提供者传递的一些复制消息可能会出错。这种确认的方式只应当用于消息消费程序可以容忍潜在的副本消息存在的情况。 queueSession = queueConnection.createQueueSession(false, session.AUTO_ACKNOWLEDGE);//P2P topicSession = topicConnection.createTopicSession(false, session.AUTO_ACKNOWLEDGE); //Pub-Sub 注意:在本例中,一个session目的从连结中创建,非值指出session是non-transactional的,并且 session将自动地确认收到一则消息。 JMS现在有两种传递消息的方式。标记为NON_PERSISTENT的消息最多投递一次,而标记为PERSISTENT的消息将使用暂存后再转送的机理投递。如果一个JMS服务离线,那么持久性消息不会丢失但是得等到这个服务恢复联机时才会被传递。所以默认的消息传递方式是非持久性的。即使使用非持久性消息可能降低内务和需要的存储器,并且这种传递方式只有当你不需要接收所有的消息时才使用。 虽然 JMS规范并不需要JMS供应商实现消息的优先级路线,但是它需要递送加快的消息优先于普通级别的消息。JMS定义了从0到9的优先级路线级别,0是最低的优先级而9则是最高的。更特殊的是0到4是正常优先级的变化幅度,而5到9是加快的优先级的变化幅度。举例来说: topicPublisher.publish (message, DeliveryMode.PERSISTENT, 8, 10000); //Pub-Sub 或 queueSender.send(message, DeliveryMode.PERSISTENT, 8, 10000);//P2P 这个代码片断,有两种消息模型,映射递送方式是持久的,优先级为加快型,生存周期是10000 (以毫秒度量 )。如果生存周期设置为零,这则消息将永远不会过期。当消息需要时间限制否则将使其无效时,设置生存周期是有用的。 JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。 ・ StreamMessage -- Java原始值的数据流 ・ MapMessage--一套名称-值对 ・ TextMessage--一个字符串对象 ・ ObjectMessage--一个序列化的 Java对象 ・ BytesMessage--一个未解释字节的数据流 JMS应用程序接口提供用于创建每种类型消息和设置荷载的方法例如,为了在一个队列创建并发送一个TextMessage实例,你可以使用下列语句: TextMessage message = queueSession.createTextMessage(); message.setText(textMsg); 以异步方式接收消息,需要创建一个消息监听器然后注册一个或多个使用MessageConsumer的JMS MessageListener接口。会话(主题或队列)负责产生某些消息,这些消息被传送到使用onMessage方法的监听者那里。 import javax.jms.*; public class ExampleListener implements MessageListener { //把消息强制转化为TextMessage格式 public void onMessage(Message message) { TextMessage textMsg = null; // 打开并处理这段消息 } } 当我们创建QueueReceiver和TopicSubscriber时,我们传递消息选择器字符串: //P2P QueueReceiver QueueReceiver receiver; receiver = session.createReceiver(queue, selector); //Pub-Sub TopicSubscriber TopicSubscriber subscriber; subscriber = session.createSubscriber(topic, selector); 为了启动消息的交付,不论是Pub/Sub还是P2P,都需要调用start方法。 TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P 当一条消息被捕捉时,这条消息做为一条必须被强制转化为适当消息类型的普通Message对象到达。这是一个被用来提取或打开消息内容的getter方法。下列代码片段使用StreamMessage类型。 private void unPackMessage (Message message) { String eName; String position; double rate; StreamMessage message; Message = session.createStreamMessage( ); //注意下面的代码必须按照我给出的顺序书写 message.writeString(eName); message.writeString(position); message.writeDouble(rate); //实现处理消息的必要的程序逻辑 } 停止消息的传递,无论是Pub/Sub还是P2P,都调用stop方法。 TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P 其他的J2EE组件--servlet或EJB--可以当作消息生产者;然而,它们可能只能同步操作,这可能是因为它们的请求-应答的性质决定的。虽然XML目前还不是被支持的消息类型,发送一个XML文件和创建一条文本类型消息以及把XML文件添加到消息的有效负载都一样简单,都是以非专有的方式传送数据。值得注意的是,一些JMS供应厂商已经提供了可用的XML消息类型。但是使用非标准的消息类型可能会出现可移植性问题。 String reportData; //reportData内容为XML 文档 TextMessage message; message = session.createTextMessage(); message.setText (reportData); 消息驱动组件(MDB)是一个当消息到达时被容器调用的异步消息消费程序。和entity和session EJB不同,MDB没有本地和远程接口并且是匿名的;它们对于客户是不可见的。MDB是JMS系统的一部分,作为消费者实现服务器上的商业逻辑程序。 一个客户程序可能通过使用JNDI定位一个与MDB相关联的JMS。 例如: Context initialContext = new InitialContext(); Queue reportInfoQueue = (javax.jms.Queue)initialContext.lookup (“java:comp/env/jms/reportInfoQueue”); MDB是由Bean类和相应的XML部署描述符组成。 Bean 类实现MessageDriveBean 接口: import javax.ejb.*; import jms.Message.*; public interface MessageDriveBean { public void ejbCreate(); public void ejbRemove(); public void setMessageDrivenContext(MessageDrivenContext ctx); } 消息监听器接口: import javax.jms.*; public interface MessageListener { public void onMessage( ); } 部署描述符 <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MDB</ejb-name> <ejb-class>MDB</ejb-class> <transaction-type>Container</transaction-type> <message-driven-destination> <jms-destination-type>javax.jms.Queue</jms-destination-type> </message-driven-destination> <security-identity> <run-as-specified-identity> <role-name>everyone</role-name> </run-as-specified-identity> </security-identity> </message-driven> </enterprise-beans> </ejb-jar> 既然我们现在已经有了一些基本的JMS知识,那么我们可以使用JMS做什么呢?任何事情都可以。 例如,分别用于销售、库存、客户服务和账目处理的系统。这些部门之间的系统很可能已经存在了很长时间,这些处理要求把事务移动到系统中去,这并不是一个小的工作。这就是消息服务适用的地点。 当售货员完成销售的时候,一条消息被发给库存系统;一旦订单消息发送给收发货人员,就可以按照订单出货了。当订单成功地发货,系统将通知顾客服务和会计系统这个订单已经成功的交易了。所有对应的每个子系统都自动地根据收到的消息进行更新。 JMS一般都不是用来整合一个系统,而是整合许多可能参与消息驱动环境的系统。JMS是一个用于开发和集成企业应用程序的重要的工具。因为许多公司都有以前遗留下来的系统和新近开发的系统综合起来的系统,消息的使用是整合整个企业的重要的步骤。
读音:英 [ˈdʒ
JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。由Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。 JMS是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC (Java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JML 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。 消息收发系统是异步的,也就是说,JMS 客户机可以发送消息而不必等待回应。比较可知,这完全不同于基于 RPC 的(基于远程过程的)系统,如 EJB 1.1、CORBA 和 Java RMI 的引用实现。在 RPC 中,客户机调用服务器上某个分布式对象的一个方法。在方法调用返回之前,该客户机被阻塞;该客户机在可以执行下一条指令之前,必须等待方法调用结束。在 JMS 中,客户机将消息发送给一个虚拟通道(主题或队列),而其它 JMS 客户机则预订或监听这个虚拟通道。当 JMS 客户机发送消息时,它并不等待回应。它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应。 JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断网络连接的客户机,诸如移动电话和PDA的最好的选择。另外, JMS采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。 Java消息服务支持两种消息模型:Point-to-Point消息(P2P)和发布订阅消息(Publish Subscribe messaging,简称Pub/Sub)。JMS规范并不要求供应商同时支持这两种消息模型,但开发者应该熟悉这两种消息模型的优势与缺点。 P2P消息模型是在点对点之间传递消息时使用。如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置。 Pub/Sub模型在一到多的消息广播时使用。如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。换句话说,它适用于所有的消息消费程序并不要求能够收到所有的信息或者消息消费程序并不想接收到任何消息的情况。 JMS通过允许创建持久订阅来简化时间相关性,即使消息预订者未激活也可以接收到消息。此外,使用持久订阅还可通过队列提供灵活性和可靠性,而仍然允许消息被发给许多的接收者。 Topic Subscriber topic Subscriber = topicSession.createDurableSubscriber(topic, subscriptionName); Connection对象表示了到两种消息模型中的任一种的消息系统的连接。服务器端和客户机端对象要求管理创建的JMS连接的状态。连接是由Connection Factory创建的并且通过JNDI查寻定位。 //取得用于 P2P的 QueueConnectionFactory QueueConnectionFactory = queueConnectionFactory( ); Context messaging = new InitialContext( ); QueueConnectionFactory = (QueueConnectionFactory) Messaging.lookup(“QueueConnectionFactory”); //取得用于 pub/sub的 TopicConnectionFactory TopicConnectonFactory topicConnectionFactory; Context messaging = new InitialContext(); topicConnectionFactory = (TopicConnectionFactory) messaging.lookup(“TopicConnectionFactory”); 注意:用于P2P的代码和用于PublishSubscribe的代码非常相似。 如果session被标记为transactional的话,确认消息就通过确认和校正来自动地处理。如果session没有标记为 transactional,你有三个用于消息确认的选项。 ・ AUTO_ACKNOWLEDGE session将自动地确认收到一则消息。 ・ CLIENT_ACKNOWLEDGE 客户端程序将确认收到一则消息,调用这则消息的确认方法。 ・ DUPS_OK_ACKNOWLEDGE 这个选项命令session“懒散的”确认消息传递,可以想到,这将导致消息提供者传递的一些复制消息可能会出错。这种确认的方式只应当用于消息消费程序可以容忍潜在的副本消息存在的情况。 queueSession = queueConnection.createQueueSession(false, session.AUTO_ACKNOWLEDGE);//P2P topicSession = topicConnection.createTopicSession(false, session.AUTO_ACKNOWLEDGE); //Pub-Sub 注意:在本例中,一个session目的从连结中创建,非值指出session是non-transactional的,并且 session将自动地确认收到一则消息。 JMS现在有两种传递消息的方式。标记为NON_PERSISTENT的消息最多投递一次,而标记为PERSISTENT的消息将使用暂存后再转送的机理投递。如果一个JMS服务离线,那么持久性消息不会丢失但是得等到这个服务恢复联机时才会被传递。所以默认的消息传递方式是非持久性的。即使使用非持久性消息可能降低内务和需要的存储器,并且这种传递方式只有当你不需要接收所有的消息时才使用。 虽然 JMS规范并不需要JMS供应商实现消息的优先级路线,但是它需要递送加快的消息优先于普通级别的消息。JMS定义了从0到9的优先级路线级别,0是最低的优先级而9则是最高的。更特殊的是0到4是正常优先级的变化幅度,而5到9是加快的优先级的变化幅度。举例来说: topicPublisher.publish (message, DeliveryMode.PERSISTENT, 8, 10000); //Pub-Sub 或 queueSender.send(message, DeliveryMode.PERSISTENT, 8, 10000);//P2P 这个代码片断,有两种消息模型,映射递送方式是持久的,优先级为加快型,生存周期是10000 (以毫秒度量 )。如果生存周期设置为零,这则消息将永远不会过期。当消息需要时间限制否则将使其无效时,设置生存周期是有用的。 JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。 ・ StreamMessage -- Java原始值的数据流 ・ MapMessage--一套名称-值对 ・ TextMessage--一个字符串对象 ・ ObjectMessage--一个序列化的 Java对象 ・ BytesMessage--一个未解释字节的数据流 JMS应用程序接口提供用于创建每种类型消息和设置荷载的方法例如,为了在一个队列创建并发送一个TextMessage实例,你可以使用下列语句: TextMessage message = queueSession.createTextMessage(); message.setText(textMsg); 以异步方式接收消息,需要创建一个消息监听器然后注册一个或多个使用MessageConsumer的JMS MessageListener接口。会话(主题或队列)负责产生某些消息,这些消息被传送到使用onMessage方法的监听者那里。 import javax.jms.*; public class ExampleListener implements MessageListener { //把消息强制转化为TextMessage格式 public void onMessage(Message message) { TextMessage textMsg = null; // 打开并处理这段消息 } } 当我们创建QueueReceiver和TopicSubscriber时,我们传递消息选择器字符串: //P2P QueueReceiver QueueReceiver receiver; receiver = session.createReceiver(queue, selector); //Pub-Sub TopicSubscriber TopicSubscriber subscriber; subscriber = session.createSubscriber(topic, selector); 为了启动消息的交付,不论是Pub/Sub还是P2P,都需要调用start方法。 TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P 当一条消息被捕捉时,这条消息做为一条必须被强制转化为适当消息类型的普通Message对象到达。这是一个被用来提取或打开消息内容的getter方法。下列代码片段使用StreamMessage类型。 private void unPackMessage (Message message) { String eName; String position; double rate; StreamMessage message; Message = session.createStreamMessage( ); //注意下面的代码必须按照我给出的顺序书写 message.writeString(eName); message.writeString(position); message.writeDouble(rate); //实现处理消息的必要的程序逻辑 } 停止消息的传递,无论是Pub/Sub还是P2P,都调用stop方法。 TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P 其他的J2EE组件--servlet或EJB--可以当作消息生产者;然而,它们可能只能同步操作,这可能是因为它们的请求-应答的性质决定的。虽然XML目前还不是被支持的消息类型,发送一个XML文件和创建一条文本类型消息以及把XML文件添加到消息的有效负载都一样简单,都是以非专有的方式传送数据。值得注意的是,一些JMS供应厂商已经提供了可用的XML消息类型。但是使用非标准的消息类型可能会出现可移植性问题。 String reportData; //reportData内容为XML 文档 TextMessage message; message = session.createTextMessage(); message.setText (reportData); 消息驱动组件(MDB)是一个当消息到达时被容器调用的异步消息消费程序。和entity和session EJB不同,MDB没有本地和远程接口并且是匿名的;它们对于客户是不可见的。MDB是JMS系统的一部分,作为消费者实现服务器上的商业逻辑程序。 一个客户程序可能通过使用JNDI定位一个与MDB相关联的JMS。 例如: Context initialContext = new InitialContext(); Queue reportInfoQueue = (javax.jms.Queue)initialContext.lookup (“java:comp/env/jms/reportInfoQueue”); MDB是由Bean类和相应的XML部署描述符组成。 Bean 类实现MessageDriveBean 接口: import javax.ejb.*; import jms.Message.*; public interface MessageDriveBean { public void ejbCreate(); public void ejbRemove(); public void setMessageDrivenContext(MessageDrivenContext ctx); } 消息监听器接口: import javax.jms.*; public interface MessageListener { public void onMessage( ); } 部署描述符 <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MDB</ejb-name> <ejb-class>MDB</ejb-class> <transaction-type>Container</transaction-type> <message-driven-destination> <jms-destination-type>javax.jms.Queue</jms-destination-type> </message-driven-destination> <security-identity> <run-as-specified-identity> <role-name>everyone</role-name> </run-as-specified-identity> </security-identity> </message-driven> </enterprise-beans> </ejb-jar> 既然我们现在已经有了一些基本的JMS知识,那么我们可以使用JMS做什么呢?任何事情都可以。 例如,分别用于销售、库存、客户服务和账目处理的系统。这些部门之间的系统很可能已经存在了很长时间,这些处理要求把事务移动到系统中去,这并不是一个小的工作。这就是消息服务适用的地点。 当售货员完成销售的时候,一条消息被发给库存系统;一旦订单消息发送给收发货人员,就可以按照订单出货了。当订单成功地发货,系统将通知顾客服务和会计系统这个订单已经成功的交易了。所有对应的每个子系统都自动地根据收到的消息进行更新。 JMS一般都不是用来整合一个系统,而是整合许多可能参与消息驱动环境的系统。JMS是一个用于开发和集成企业应用程序的重要的工具。因为许多公司都有以前遗留下来的系统和新近开发的系统综合起来的系统,消息的使用是整合整个企业的重要的步骤。
文章标签:
来自:jms什么意思
本文链接:https://www.u1e.cn/baike/a/a3110aae10d7985526c05f5e [复制]
猜你喜欢
我想要的未来,就是每天早上起床都能看见你和阳光都在。
生活辛苦,能找到一点阳光就快乐就好了;身体烦累,但是随时让自己心情舒畅,这是一个极好的能力,身累不致心累,生活还就是美好的。
有梦想的人睡不着,没梦想的人睡不醒。
Just because I don't want to be savage, it doesn't mean I have no temper.
最终你相信什么就能成为什么。因为世界上最可怕的二个词,一个叫执着,一个叫认真,认真的人改变自己,执着的人改变命运。只要在路上,就没有到不了的地方。
Teacher, engineer of human soul, who won't praise you!
心香三炷达苍冥,祈愿尘寰六合清。更愿佛光常注照,诸方好运享安宁!给您拜年了,祈愿您新年胜因善缘,吉祥安康!
寂寂闻猿愁,行行见云收。——李白《寻高凤石门山中元丹丘》
家声中垒也称贤,喜气临门敞绮筵,双璧联辉夸美眷,六葭应节缔良缘;女如五彩云犹丽,郎却斯文德自妍,恐负嘉招先作贺,诗题汤饼约明年。
不图虚名,不慕奢华。
不管发生什么,你都不要放弃,肯定会有意想不到的风景。也许不是你本来想走的路,可是另一条路有另一条路的风景,不要念念不忘原来的路,在这里你会遇到难忘的更好的风景。
在遥远的城市,陌生的地方,有他未曾见过的山和海。
俗话说:一百种人有一百种命运,有的人可以一条路一直走到底,有的人却注定要曲曲折折,不过谁也不需要羡慕谁。最重要的是:我们迟早会遇上。
人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。
等一阵风,等一阵雨,等一个唯一的你。
你们给我挺住,都别吃,都那么肥了怎么还有脸吃。
如果不醒来,那么现实和梦境又有何分别。
天塌下来你顶着,我垫着!
最美的不是下雨天,是陪你一起躲过的屋檐。
南音少女
歇后语大全
猪八戒买猪肝是什么意思?
周瑜讨荆州是什么意思?
宰个鸽子也要请屠夫提刀是什么意思?
又想要公羊,又盼有奶喝是什么意思?
阎王摆手是什么意思?
绣花姑娘打架是什么意思?
小鸭蛋冒充大鸡蛋是什么意思?
小葱拌豆腐是什么意思?
乡下人穿大褂是什么意思?
西瓜甜不甜是什么意思?
乌鸦的下水(内脏)是什么意思?
铁打的衙门,流水的县官是什么意思?
天然牛黄是什么意思?
耍猴的碰上敲锣的是什么意思?
歪嘴当兵是什么意思?
屎壳郎放屁是什么意思?
墙上的麦子是什么意思?
脓胞破了顶是什么意思?
泡透的土墙是什么意思?
泥娃娃遭雨林是什么意思?
没安头的锄杠是什么意思?
马槽里的苍蝇是什么意思?
老鼠跌香炉是什么意思?
两人盖床小被子是什么意思?
两分钱买个羊蹄子是什么意思?
脸蛋贴膏药是什么意思?
老太太吃牛筋是什么意思?
老九的弟弟是什么意思?
老牛反刍是什么意思?
老虎拉车是什么意思?
老和尚讲佛经是什么意思?
拉粪便嗑瓜子是什么意思?
拉痢打摆子是什么意思?
急性子碰到慢性子是什么意思?
海蜇头做帽子是什么意思?
海军的衬衫是什么意思?
裹脚布做衣领是什么意思?
跪着养猪是什么意思?
黄鼠狼偷鸡是什么意思?
碓窝(dui wo石臼)当帽戴是什么意思?
灯芯草做琴弦是什么意思?
担沙填海是什么意思?
带素珠的老虎是什么意思?
大人不记小人过是什么意思?
大姑娘要婆家是什么意思?
城隍庙里的猪头是什么意思?
炒胡豆(蚕豆)下酒是什么意思?
簸箕里的蚂蚁是什么意思?
婊子立牌坊是什么意思?
背油桶救火是什么意思?
相关推荐
还没有人回应过