code: public RpcInternalContext setAttachment(String key, Object value) {
          if (key == null) {
              return this;
          }
          if (!ATTACHMENT_ENABLE) {
              // 未开启附件传递功能，只能传递隐藏key("." 开头的Key）
              if (!isHiddenParamKey(key)) {
                  return this;
              }
          } else {
              if (!isValidInternalParamKey(key)) { // 打开附件传递功能，只能传 "_" 和 "." 开头的Key
                  throw new IllegalArgumentException("key must start with" + RpcConstants.INTERNAL_KEY_PREFIX
                      + " or " + RpcConstants.HIDE_KEY_PREFIX);
              }
          }
          if (value == null) {
              attachments.remove(key);
          } else {
              attachments.put(key, value);
          }
          return this;
      }
docs: set attachment.
  
  @param key   the key
  @param value the value
  @return context attachment