问题:当一个CM服务器上的项目从一个存储区文件夹移动到另一个存储区文件夹时,它们会从第二个CM服务器上消失
简要介绍:
我们为我们的网站设置了两台CM服务器 - CM1和CM2。我们有一个Item存储桶,用于存储具有三个嵌套文件夹的项目:年,月,日。 该项目最初是使用创建日期创建的,我们有一个自定义路径解析器,它根据字段“截止日期”更新项目的路径,然后每当“截止日期”字段被修改时将项目移动到新的存储桶中该项目已保存。
以下代码在已保存的项目上运行:
/*move the saved item according to release/due date*/
BucketManager.MoveItemIntoBucket(savedItem, bucketItem);
/*delete previous parent if it has no child (delete empty buckets)*/
if (BucketManager.IsItemContainedWithinBucket(removeItem))
{
if (!removeItem.HasChildren)
{
removeItem.Delete();
}
}
完成以下设置以根据'截止日期'实现接口IDynamicBucketFolderPath(Sitecore.Buckets.dll)的GetFolderPath方法:
<setting name="BucketConfiguration.DynamicBucketFolderPath">
<patch:attribute name="value"> FullyQualifiedPathOfTheClassWithGetFolderPathMethod, AssemblyName </patch:attribute>
</setting>
问题描述:
当我们在CM1服务器上的项目桶中创建项目时,该项目将在使用当前日期创建的年,月和日文件夹中创建。 如果在CM2服务器上检查了相同的项目,则在那里可以看到它。 最初,“截止日期”字段为空白。
当在CM1服务器上使用新日期修改“截止日期”字段并保存该项目时,该项目将移至新创建的存储桶文件夹,其日期结构为“截止日期”。 如果在CM2服务器上检查了相同的项目,则它现在不存在。
使用Sitecore.Buckets.dll中存在的BucketManager类的MoveItemIntoBucket方法,两个服务器上的项似乎没有同步。
如果我们现在从CM1的内容编辑器中的开发人员功能区为同一项目执行'更新项目',则相同的项目开始出现在CM2服务器上,但我们不希望每当新的存储桶都手动执行“更新项目”项目已创建。
可能导致此行为的原因是什么?我怎样才能解决这个问题?
答案 0 :(得分:1)
根据您的说明我相信您尚未为内容管理服务器启用缩放设置。与Sitecore中的普通项目不同,Bucketed项目的界面在很大程度上依赖于搜索。假设您使用现成的Lucene实现,每个CM服务器都维护自己的索引。如果未启用Scaling配置,则只有进行更改的服务器才会更新其搜索索引。扩展配置将启用事件,因此远程服务器也可以识别这些更改。
Sitecore Search Scaling Guide的第24页介绍了如何启用Scaling配置以及可用的设置。请确保为两个Content Management服务器启用Sitecore.Buckets.Scaling.config。
如果您有多个CD服务器,则同样适用,因此请确保为这些服务器启用适当的缩放配置。