private void assertMsg(Message msg) {
   assertNotNull(msg);
   assertEquals(9999L, msg.getId());
   assertEquals("test", msg.getTopic());
   assertFalse(msg.hasAttribute());
   assertEquals(0, MessageAccessor.getFlag(msg));
   assertEquals("hello", new String(msg.getData()));
 }
예제 #2
0
  /**
   * 将消息属性和消息payload打包,结构如下:</br></br> 0或者1个定长attribute + payload
   *
   * @param message
   * @return
   */
  public static final byte[] encodePayload(final Message message) {
    final byte[] payload = message.getData();
    final String attribute = message.getAttribute();
    byte[] attrData = null;
    if (attribute != null) {
      attrData = ByteUtils.getBytes(attribute);
    } else {
      return payload;
    }
    final int attrLen = attrData == null ? 0 : attrData.length;
    final ByteBuffer buffer = ByteBuffer.allocate(4 + attrLen + payload.length);
    if (attribute != null) {
      buffer.putInt(attrLen);
      if (attrData != null) {
        buffer.put(attrData);
      }
    }

    buffer.put(payload);
    return buffer.array();
  }
 public void persistent(Message message) {
   List<Span> spanList;
   try {
     spanList = (List) PB.parsePBBytes(message.getData());
   } catch (Exception e) {
     log.error(e.getMessage());
     return;
   }
   try {
     if (spanList != null) {
       for (Span s : spanList) {
         insertService.addSpan(s);
         insertService.addAnnotation(s);
         insertService.addTrace(s);
       }
     }
   } catch (Exception e) {
     e.printStackTrace();
     log.error(e.getMessage());
   }
 }