从其他群集计算机更新本地属性

2020-09-16 02:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个由4台计算机组成的集群,其中一台用于后台。 当我从local.properties更改属性时,我想将其注册到数据库中,并且所有计算机都应获取新值。

为此,我为新属性或更改后的属性创建一个CustomLocalProperty类型。 当我从后台计算机更改属性时,该属性已注册到数据库中,并通过拦截器(下面的代码段)添加到了运行时属性中,但是其他计算机看不到更新后的值或新值。

如何从其他计算机上更新此值?

  getConfiguration()。addProperty(customLocalPropertyModel.getKey(),
    customLocalPropertyModel.getValue());
  

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个由4台计算机组成的集群,其中一台用于后台。 当我从local.properties更改属性时,我想将其注册到数据库中,并且所有计算机都应获取新值。

为此,我为新属性或更改后的属性创建一个CustomLocalProperty类型。 当我从后台计算机更改属性时,该属性已注册到数据库中,并通过拦截器(下面的代码段)添加到了运行时属性中,但是其他计算机看不到更新后的值或新值。

如何从其他计算机上更新此值?

  getConfiguration()。addProperty(customLocalPropertyModel.getKey(),
    customLocalPropertyModel.getValue());
  
付费偷看设置
发送
1条回答
shere_lin
1楼-- · 2020-09-16 02:58

当客户考虑某天要更改本地属性(例如:product.price.minThreshold)时,我不希望客户输入Hac来执行此操作。

在我的情况下,客户可以更改此属性或从Backoffice添加新的本地属性。 我使用 CustomLocalPropertyModel 来保留客户对本地属性的更改,因此,当Server重新启动时,我不会丢失客户更改,可以将它们与local.properties一起从数据库中获取。

首先,我为 CustomLocalPropertyModel 创建一个拦截器,称为 CustomLocalPropertyInterceptor ,然后在拦截器中触发(发布)一个名为 CustomLocalPropertyEvent 的事件。 此事件实现 ClusterAwareEvent 。 我可以使用 ClusterAwareEvent 到达其他节点。(请参阅官方文档的以下内容)

"由于SAP Hybris Commerce可以在集群中运行,因此可以将事件从一个节点发送到特定的第二个节点,或者在集群的所有节点之间广播事件。然后,您必须实现publish(int 如果要将事件从ID为sourceNodeId的集群节点发布到ID为targetNodeId的节点,则返回true的方式返回true,基本上返回是否希望从集群发布事件的布尔值 节点sourceNodeId到群集节点targetNodeId集群。有时您只希望一个特殊节点接收事件,例如承载需要通知数据更改的索引服务的节点。如果targetNodeId等于节点ID,则应返回true。 承载该索引服务器的节点。"

  @Override
  public boolean publish(int sourceNodeId,int targetNodeId){
      LOG.info("从所有群集节点广播到所有群集节点");
      返回true;
  }

  

您可以保留事件中的数据。 然后,我创建一个名为 CustomPropertyEventListener 的类,以捕获其他节点中的事件,从而使这些节点获得新的或更改的值,并通过下面的代码段将其添加到自己的hac中。

  configurationService.getConfiguration()。addProperty(localPropertyKey,localPropertyValue);
  

一周热门 更多>